使用cron停止/杀死Python脚本

时间:2018-07-21 20:29:49

标签: python python-2.7 cron

我的目标是每天(周五和周六除外)每天10:00运行python脚本,并在18:00之前终止它。

我在crontab中添加了以下内容,但第二个命令不起作用。

0 10 * * 0,1,2,3,4 /home/pi/MotionDetector.py
0 18 * * 0,1,2,3,4 /home/pi/MotionDetector.py killall -9 MotionDetector.py 

使用Linux 2.7.9

我尝试了this解决方案,该解决方案通过终端运行,但在cron中不起作用(当我在终端中键入命令时,它立即关闭了脚本,但是当我将其放在crontab上时,它什么也没做)

1 个答案:

答案 0 :(得分:1)

杀死工作:

0 18 * * 0,1,2,3,4 /usr/bin/pkill -f MotionDetector.py

pkill按名称杀死进程。默认的搜索条件是按全名查找流程,而-f参数允许您按流程名称中的任何部分进行搜索。


已更新解决方案,以解决@håken-lid提出的情况:

由cron或用户执行脚本时,进程名称的格式为:
cron /home/pi/venv/bin/python /home/pi/MotionDetector.py
用户python MotionDetectory.py

使用简单的正则表达式模式,我们可以终止启动过程,

  • cron或用户:

    0 18 * * 0,1,2,3,4 /usr/bin/pkill -f 'python.*MotionDetector.py'

  • 仅cron

    0 18 * * 0,1,2,3,4 /usr/bin/pkill -f ^'/home/pi/venv/bin/python /home/pi/MotionDetector.py'