【发布时间】:2014-04-24 13:32:08
【问题描述】:
查看flock 后,我有点困惑。基本上有两种形式:
flock [options] <file|directory> <command> [command args]
flock [options] <file descriptor number>
现在如果我想使用第二种形式,我需要使用exec 200<> file。然后我用flock 200 锁定文件。
现在我阻止了我的脚本破坏file,因为它需要在这样做之前获取锁。仍然为什么我必须先创建描述符?我可以在不使用该描述符的情况下对file 进行操作。
那我为什么要强制创建描述符呢?
【问题讨论】:
-
您需要创建一个描述符,因为您使用的命令需要一个文件描述符。如果您不想创建描述符,请使用第一种形式。
-
@chepner 是的,显然第一种形式直接采用命令我经常使用该文件,在获取锁和再次释放它之间有很多命令。所以我不能用第一个
-
啊,我不想打开子shell
-
@mjb4,了解
flock的关键之一是您不需要调用flock -u来释放锁——它会在附加文件描述符后立即释放to 已关闭。因此,如果您没有打开描述符,您将无法在多个命令中使您的锁定持续。