我有一个循环运行的脚本。我可以使用 ./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