【问题标题】:(bash) flock: when to use the -c option?(bash)flock:何时使用 -c 选项?
【发布时间】:2014-12-16 23:27:06
【问题描述】:

谁能向我解释为什么flock 中存在-c 选项?

我无法很好地描述它与简单地指定在flock 之后执行的命令有何不同(除了它对命令没有参数的限制)。

【问题讨论】:

  • -c 只允许传递单个命令
  • 感谢@BallPython,但这并不能回答问题。我已经知道-c 施加的限制;我试图理解它为什么存在,为什么我们需要它,什么时候应该使用它。

标签: bash flock


【解决方案1】:

-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是如何管理的?
  • @RashaMatt flock 仍然运行它只是不处理重定向等的命令,因为这些在flock 运行时已经处理并看到指定要运行的命令的参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 2016-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 2021-11-04
相关资源
最近更新 更多