Linux环境下给python项目写个启停服务
2024-10-20 20:54:55
写个服务,写完后放在/lib/systemd/system路径下
update_rule.server
[Unit]
Description = TinyScan update rule
[Service]
Type=forking
WorkingDirectory=/root/TinyScan_Auto_Deploy/init_cve
ExecStart=/root/TinyScan_Auto_Deploy/init_cve/start.sh start
ExecStop=/root/TinyScan_Auto_Deploy/init_cve/start.sh stop
ExecReload=/root/TinyScan_Auto_Deploy/init_cve/start.sh restart
Restart=always
[Install]
WantedBy=multi-user.target
start.sh
#!/bin/bash
SERVICE_NAME="update-rule"
#CONFIG_NETCARD_NAME=`cat /tinyscan/config/config.ini | grep -zo '\[config_net_card\]\sname=.*' | sed -n '2p' | awk -F '=' '{print $2}'`
#SERVER_NETCARD_NAME=`cat /tinyscan/config/config.ini | grep -zo '\[net_card\]\sname=.*' | sed -n '2p' | awk -F '=' '{print $2}'`
pid=`ps -ef | grep 'python3 /root/TinyScan_Auto_Deploy/init_cve/update_rule.py' | grep -v 'grep' | awk '{print $2}'`
up()
{
# if [ ${CONFIG_NETCARD_NAME} != ${SERVER_NETCARD_NAME} ]; then
# iptables -A INPUT -i ${SERVER_NETCARD_NAME} -p tcp --dport 1080 -j DROP
# fi
# source /tinyscan/config/venv/bin/activate
python3 /root/TinyScan_Auto_Deploy/init_cve/update_rule.py &
}
down()
{
#if [ ${CONFIG_NETCARD_NAME} != ${SERVER_NETCARD_NAME} ]; then
# iptable -D INPUT -i ${SERVER_NETCARD_NAME} -p tcp --dport 1080 -j DROP
#fi
kill ${pid}
}
if [ ! $1 ]; then
echo "Please specify args 'start|restart|stop'"
exit
fi
if [ $1 == 'start' ]; then
if [ ! $pid ]; then
up
else
echo "${SERVICE_NAME} is running! pid=$pid"
fi
fi
if [ $1 == 'restart' ]; then
if [ $pid ]; then
down
else
sleep 3
up
fi
fi
if [ $1 == 'stop' ]; then
if [ $pid ]; then
down
else
echo "${SERVICE_NAME} is stopped"
fi
fi
update_rule.py是一个定时任务
import os
import schedule
import time
import datetime
def job1():
os.system('/root/TinyScan_Auto_Deploy/init_cve/sSnvd -u')
if __name__ == '__main__':
# schedule.every(10).seconds.do(job1)
schedule.every().day.at('11:00').do(job1)
while True:
schedule.run_pending()
当然单纯的定时任务可以利用crontab来搞定
crontab定时任务
cat /etc/crontab
crontab -e : 编辑定时任务(用户可以省略,默认是当前用户)
crontab -l : 查看定时任务(只查看当前用户的定时任务)
cat /var/log/cron : 可以查看到执行那些定时任务
cat /var/log/messages: 记录系统操作的日志,(例如:用户登录)
最新文章
- 探索c#之Async、Await剖析
- union和union all有什么不同?
- centos上手动编译安装tmux的问题
- 2877: [Noi2012]魔幻棋盘 - BZOJ
- cocos2d-x CCScale9Sprite
- C++专题 - 修练8年C++面向对象程序设计之体会 林锐
- Linux - Linux系统目录架构
- webstorm创建nodejs + express + jade 的web 项目
- Cannot convert 0 of type class java.lang.Integer to class java.lang.Boolean
- vue项目实战总结
- String,StringBuffer,StringBuilder的区别
- 苹果手机对网页上样式为position:fixed的弹窗支持不好的解决办法
- iOS 快速排序
- git多账号切换
- 支持开源,推动Orchard
- Flask web开发之路十四
- Swift使用AlamoFire超时设置和事件处理
- 002.WordPress常见插件
- Eclipse设置之:代码注释/server 控制台输出乱码解决
- flask简单的路由分发
热门文章
- concurrent-map 和 sync.Map,我该选择哪个?
- 基于NPOI封装导出Excel方法
- Redux Toolkit 的使用方法
- 【KAWAKO】TVM-在ubuntu服务器上的安装
- php pdo如何查询记录条数
- The size of the request headers is too long.
- 用于双目重建中的GPU编程:julia-cuda
- 【转】IDEA搭建SSM框架(spring+maven+mybatis+mysql+junit)
- 在github上如何克隆带子模块的项目?
- elasticsearch8.6.1安装后无法打开127.0.0.1:9200的解决办法