我有一个每天由 cron 启动的脚本。
启动命令如下所示:flock -n /tmp/mylock.LOCK /path/to/script/script.sh
脚本script.sh
更新我的服务器的配置文件并尝试重新启动它(如果它正在运行,则重新启动它,如果没有运行,则启动它)。但问题是该服务器开始持有锁/tmp/mylock.LOCK
,这阻止了script.sh
第二天启动。
我是否可以以某种方式运行脚本来重新启动我的服务器而无需在此过程中获取文件锁?
操作系统:Ubuntu 12.04
答案1
有一个-o
选项,我flock
第一次在手册页上错过了它。
引用自手册页:
-o, --close Close the file descriptor on which the lock is held before exe‐ cuting command. This is useful if command spawns a child process which should not be holding the lock.
所以它确实满足了我的需要,现在只有父flock
进程持有锁。