Crontab没有运行第二条命令

时间:2020-08-19 04:36:47

标签: python-3.x cron raspberry-pi

我在crontab中有以下两行。我希望第一行在启动后30秒钟启动python脚本,第二行每隔两分钟杀死并重新启动脚本。

@reboot (/bin/sleep 30; /usr/bin/python3 -u /home/pi/Desktop/file.py > /home/pi/Desktop/logfile 2>&1)

*/2 * * * * (kill $(pgrep -f 'python3 -u /home/pi/Desktop/file.py'); /usr/bin/python3 -u /home/pi/Desktop/file.py > /home/pi/Desktop/logfile 2>&1)

该脚本在启动时可以正常运行,并且两分钟后该脚本被终止,但是第二行未重新启动该脚本。我不认为这是语法错误,因为如果我将第二行直接复制到终端中(没有* / 2 * * * *),它将正确终止并重新启动脚本。为什么此行在终端中有效,但在crontab中却无效?

预先感谢

1 个答案:

答案 0 :(得分:0)

我不确定为什么,但是crontab似乎不会在'kill $()'命令之后的同一行中执行任何其他命令。 我是通过将printf命令放置在kill命令之后的日志文件之前的日志文件中发现的,但是只有kill之前的命令才出现在日志中。我删除了kill命令,但将pgrep留在了它的位置,这导致日志中的第一个printf文本,PID号和第二个printf文本。 我的解决方法是将两个命令放入一个shell文件中,并让crontab运行该shell。似乎工作正常。