我使用 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 实例,直到释放该锁定为止。