在我的 Ubuntu 18.04 机器上,我有一个 Python 脚本需要每 x 小时运行一次(比如说 3 小时),我使用 crontab
为了那个原因。但是一旦脚本启动,可能需要超过 x 小时才能完成(比如说 5 小时)。这意味着下一次启动已经到期,而第一次启动仍在运行。由于各种原因,我不能简单地增加脚本启动之间的时间间隔,而必须依赖于特定的设置。
在 Windows 任务计划程序中,有一个选项可防止在脚本仍在运行时启动新实例。 Linux crontab
有类似的东西吗? ?
最佳答案
flock如果您可以在系统上安装它,这是一个很好的解决方案。
假设您的 crontab 中有以下内容:
0 */3 * * * my_script.sh
您可以通过flock添加锁定检查,如下所示:0 */3 * * * flock /tmp/my_script.lock my_script.sh
您也可以通过一些选项 - 例如,您可以让 flock 最多等待 2 分钟以解决先前的锁定问题,如下所示:0 */3 * * * flock -w 120 /tmp/my_script.lock my_script.sh
如果您无法安装flock,那么您可以编写自己的“锁定”文件并在完成更多工作后将其删除 - 或者您可以考虑使用pgrep。Here's some more info on both flock and pgrep options
关于Ubuntu - 当原始脚本仍在运行时,防止 crontab 启动新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72026590/