cron 作业的进程是在它调用的脚本执行时完成的,还是仅在它完成时完成?

cron 作业的进程是在它调用的脚本执行时完成的,还是仅在它完成时完成?

我使用 cron 每分钟运行一个 php 脚本,我想锁定它以免重叠。所以我的问题是,如果我用 flock 锁定 cron 作业,会锁定 cron 的进程还是 php 脚本的进程?

答案1

flock将锁环绕在命令的执行上,并且只要该命令正在运行,就会一直持有该锁。

如果这是每分钟运行一次的 cronjob:

* * * * * /usr/bin/flock -n /tmp/fcj.lockfile /usr/local/bin/frequent_cron_job 

flock将在 的时间内保持锁定/usr/local/bin/frequent_cron_job。如果该批处理作业耗时超过一分钟,则 cron 将无法获取锁定,并且不会再次运行该批处理和/或同时运行多个 often_cron_job 实例,直到释放该锁定为止。

相关内容