将 Cron 设置为 pkill -f

将 Cron 设置为 pkill -f

我有一个循环运行的脚本。我可以使用 ./run_my_script 轻松地从命令行手动启动脚本,但有时脚本会锁定,只需要重新启动。所以我 ctrl-c 并重新启动。现在我想创建一个 cron 来定期停止和重新启动脚本。所以在我的 cron 中我输入:

00 * * * * pkill -f ./run_my_script && /bin/sleep 15 && ./run_my_script

这是行不通的。它会杀死脚本但不会重新启动它,所以我尝试:

00 * * * * pkill -f ./run_my_script
00 * * * * /bin/sleep 15 && ./run_my_script

这也行不通。它会终止脚本,但不会重新启动它。所以我尝试:

00 * * * * pkill -f ./run_my_script
01 * * * * /bin/sleep 15 && ./run_my_script

而且效果很好。问题是,我只需要杀死和重新启动之间的几秒钟,而不是一整分钟。我该怎么做?

答案1

pkill仅当“一个或多个进程符合条件”时,才会以状态零退出。这意味着如果./run_my_script尚未运行,则第&&一个

pkill -f ./run_my_script && /bin/sleep 15 && ./run_my_script

将导致其余部分无法运行。

使用分号而不是 and 应该可以

pkill -f ./run_my_script ; /bin/sleep 15 && ./run_my_script

答案2

所以我尝试了这个并且它有效:

00 * * * * /bin/sleep 45 && pkill -f ./run_my_script
01 * * * * ./run_my_script

相关内容