关于该线程:
bash flock: exit if can't acquire lock

如果有人可以向我解释“200”代表什么,我将不胜感激。

我已经读过有关flock的信息,似乎要指定200作为文件描述符,但是这个数字有什么用呢?

最佳答案

这个数字200没什么特别的。它恰好是flock命令的手册页中使用的示例。并且恰好是一个很大的数字,因此它不太可能与您在脚本中打开的任何其他文件的文件描述符冲突。

在您的评论中,您询问以下内容:

(
  flock -e 200
  echo "In critical section"
  sleep 5
) 200>/tmp/blah.lockfile
echo "After critical section"

括号()创建一个子 shell ;与父流程分开的新流程。 200>/tmp/blah.lockfile使该进程在文件描述符200上打开/tmp/blah.lockfile进行写入。括号内的命令在该Shell中执行。
flock -e 200在文件描述符200指向的文件上获得排他锁。排他锁意味着,任何试图在该文件上获得排他锁或共享锁的人都将阻塞(等待),直到该锁被放弃,或者如果他们超时或要求不阻止,则失败。因此,在子 shell 程序主体的其余部分(echosleep命令)中,该子 shell 程序将持有该锁,并且没有其他人可以获得该锁。子 shell 程序完成后,将关闭文件并放弃锁定。

关于bash - bash群:为什么200?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13551840/

10-15 01:19