Cron作业杀死并重新启动Python脚本

时间:2015-01-04 16:57:26

标签: linux bash shell

我在linux服务器上设置了一个cron作业,每隔一天杀死并重启一个python脚本(run.py)。我将作业设置为以root身份运行,但我发现有时它不会正确地终止进程(最终会连续运行两个脚本)。

有更好的方法吗?

我的cron工作参数:

0 8 * * 1,4,7 cd /home/myUser && ./start.sh

start.sh:

#!/bin/bash
echo "Running..."
sudo pkill -f run.py
sudo python run.py &

2 个答案:

答案 0 :(得分:2)

我猜run.py的运行时间为python,而不是run.py。所以你找不到任何kill -f run.py

您应该将进程的PID回显到文件,如果它仍在运行,则使用该值来终止先前的进程。只需添加echo $! >/path/to/pid.file作为start.sh脚本中的最后一行即可。

了解更多:


让您入门的示例:

#!/bin/bash
echo "Running..."
sudo pkill -F /path/to/pid.pid
sudo python /path/to/run.py &
echo $! > /path/to/pid.pid

答案 1 :(得分:0)

另一种替代方法是,如果您使用的是支持upstart的系统,则可以在upstart上运行python脚本。然后你可以在开始时sudo /sbin/start job_name sudo /sbin/stop job_name,这使得upstart为你管理pids。

Python upstart脚本 Upstart python script