【问题标题】:Stop / Kill a Python script using cron使用 cron 停止/终止 Python 脚本
【发布时间】:2018-12-29 18:56:05
【问题描述】:

我的目标是每天(周五和周六除外)在 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 上时它什么也没做)

【问题讨论】:

  • 你为什么将 killall 作为参数传递给 MotionDetector.py

标签: python python-2.7 cron


【解决方案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
userpython 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'

【讨论】:

  • 为什么在这里使用-f?你不会冒险杀死例如vim MotionDetector.py吗?
猜你喜欢
  • 2011-05-28
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 2021-03-20
  • 2019-04-13
  • 2020-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多