bash – 防止锁传播

在bash下进行锁定的简单且看似可靠的方法是:
exec 9>>lockfile
flock 9

然而,bash臭名昭着地将这样的fd锁传播给所有分叉的东西,包括执行的程序等.

有没有办法告诉bash不要复制fd?锁定附加到fd是很好的,当程序终止时,无论它如何被终止,它都会被删除.

我知道我可以这样做:

run_some_prog 9>&-

但这很乏味.

有没有更好的解决方案?

您可以使用-o命令行选项flock(1)(长选项 – 关闭,这可能更适合在脚本中编写自我文档性质)来指定在通过flock执行命令之前应关闭文件描述符(1):
-o,--close
          Close the file descriptor on which the lock is held
          before executing command.  This is useful if command
          spawns a child process which should not be holding
          the lock.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...