1.创建start.sh脚本,该脚本用于杀死进程并重启服务
#!/bin/sh
#需要定时重启程序的绝对路径
RESOURCE_NAME=/home/gm_prox_zf/manage.py
#查找进程号
tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|awk '{print $2}'`
if [ ${tpid} ]; then
echo ${tpid}
echo 'Stop Process...'
#杀死进程
kill -15 $tpid
fi
sleep 5
echo $! > tpid
#重新启动程序
python3 /home/gm_prox_zf/manage.py
echo Start Success!
#新的进程号
tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|awk '{print $2}'`
echo ${tpid}
2.将start.sh放到manage.py的同级目录中,修改start.sh并测试start.sh有没有问题
(1)修改start.sh权限
chmod +x start.sh
(2)运行start.sh
./start.sh
如果遇到以下错误:
运行以下命令就可解决:
yum -y install dos2unix
dos2unix start.sh
./start.sh
3.设置定时任务
(1)添加定时任务
crontab -e
添加以下任务:
*/3 * * * * /home/gm_prox_zf/start.sh >/home/gm_prox_zf/myout.out 2>&1
*/3 * * * *是cron表达式,表示每三分钟执行一次该任务
/home/gm_prox_zf/start.sh,表示要执行的任务
>/home/gm_prox_zf/myout.out 2>&1,表示将输出结果保存到myout.out文件中
(2)重新加载cron服务
systemctl reload crond.service
(3)重新启动cron服务
systemctl restart crond.service
(4)查看当前定时任务列表
crontab -l
(5) 查看任务是否启动
grep "start.sh" /var/log/cron
在/var/log/cron中查找start.sh
出现上述结果,表明任务启动成功!
PS:
按照以上操作完成后,如果发现任务在执行但是并没有开启新的进程号,需要确认步骤1中的地址都是绝对路径!!!包括python路径和py路径
cron相关命令参考链接:https://www.cnblogs.com/sxdcgaq8080/p/10730633.html