Cron 作业终止并重新启动 Python 脚本

Cron Job Killing and Restarting Python Script

我在 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 &

我猜 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

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

Python 脚本新贵