在 Bash 脚本中通过单个命令释放 flock

在 Bash 脚本中通过单个命令释放 flock

我有一个每天由 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进程持有锁。

相关内容