【发布时间】:2014-12-16 23:27:06
【问题描述】:
谁能向我解释为什么flock 中存在-c 选项?
我无法很好地描述它与简单地指定在flock 之后执行的命令有何不同(除了它对命令没有参数的限制)。
【问题讨论】:
-
-c 只允许传递单个命令
-
感谢@BallPython,但这并不能回答问题。我已经知道
-c施加的限制;我试图理解它为什么存在,为什么我们需要它,什么时候应该使用它。
谁能向我解释为什么flock 中存在-c 选项?
我无法很好地描述它与简单地指定在flock 之后执行的命令有何不同(除了它对命令没有参数的限制)。
【问题讨论】:
-c 施加的限制;我试图理解它为什么存在,为什么我们需要它,什么时候应该使用它。
-c 使用命令调用 shell。
考虑一下:
flock .lock somecommand > myfile
由于>被当前shell解释而不是flock,myfile将在锁被捕获之前被截断。
您可以使用-c 解决此问题:
flock .lock -c 'somecommand > myfile'
现在重定向是在锁被捕获后执行的。但是,它确实没用,因为您可以自己调用一个 shell:
flock .lock sh -c 'somecommand > myfile'
【讨论】:
man 页面不清楚。它应该说“-c 将以下命令字符串传递给 new shell。”无论如何 - 它执行 which shell?总是sh?
$SHELL 并回退到 sh。
-c不被使用时,它必须是当前shell执行提供的命令...flock是如何管理的?