我需要防止脚本同时执行多次,所以flock看起来就在我的街上。
我想不通的是,我是否需要在完成 cron 作业后手动删除锁定文件?
我是这样使用它的:
# m h dom mon dow user command
*/20 * * * * root /usr/bin/flock -w 0 /var/cron.lock /usr/bin/myscript
Run Code Online (Sandbox Code Playgroud)
这个脚本也由 upstart 在机器启动时执行(这是竞争条件所在)。
文件创建正常,但我真的看不到命令如何知道锁是否被另一个进程持有。它是空的,并且在启动 cron 作业时监视它的更改不会产生任何结果(使用fuser)。
如果有人可以解释它是如何工作的,我将不胜感激!