我有一组shell脚本,它们使用truecrypt和rsync在我的系统上执行备份。我想避免这些不同脚本同时运行的可能性。flock(1)未能释放锁
它们在一个子shell使用flock
,如在手册页描述:
(
flock -n 9 || exit 1
# ... commands executed under lock ...
) 9>/var/lock/mylockfile
但是,锁定始终未能获取用于后续运行(与退出状态1)。
然而fuser /var/lock/mylockfile
和lsof /var/lock/mylockfile
什么都不显示。现在
,如果我添加命令flock -u
手动解锁,就像这样:
(
flock -n 9 || exit 1
# ... commands executed under lock ...
flock -u 9
) 9>/var/lock/mylockfile
然后脚本。
我正在使用flock
吗?在区块内部拨打flock -u
安全吗?
仅供参考麻烦的脚本是在命令块内调用truecrypt的脚本。
太棒了,谢谢!你确实是对的。我在调用truecrypt时关闭了文件描述符(并删除了'flock -u'调用),现在它工作得很好。 – QuasarDonkey