我在 Linux 服务器上设置了一个 cron 作业,每隔一天终止并重新启动一个 python 脚本 (run.py)。我将作业设置为以 root 身份运行,但我发现有时它无法正确终止进程(并最终连续运行两个脚本)。
有更好的方法吗?
我的 cron 作业参数:
0 8 * * 1,4,7 cd/home/myUser && ./start.sh
开始.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
脚本中的最后一行来执行此操作。
阅读更多:
- https://serverfault.com/questions/205498/how-to-get-pid-of-just-started-process
- How to read a file into a variable in shell?
- http://www.cyberciti.biz/faq/kill-process-in-linux-or-terminate-a-process-in-unix-or-linux-systems/
入门示例:
#!/bin/bash
echo "Running..."
sudo pkill -F /path/to/pid.pid
sudo python /path/to/run.py &
echo $! > /path/to/pid.pid
关于linux - Cron 作业终止并重新启动 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27767972/