子shell中的杀戮命令

时间:2014-05-23 05:12:56

标签: macos bash process tail rundeck

我想拖尾文件并输出其内容,直到达到某个模式。目前,我这样做:

grep -q 'pattern' <(tail -F /my/file | tee /dev/stderr)
exit 0

这很好用,但问题在于,即使这个bash进程退出,也会有一个尾巴悬挂的过程。这对于Rundeck来说是一个问题,因为它会认为我的命令还没有完成。我尝试过这些选项:

  1. 使用tail --pid = $$。这适用于Linux,但我正在使用Mac,其尾部版本不支持--pid。

  2. 使用“kill 0”。这确实会杀死尾部进程,但它也会崩溃Rundeck(原文如此)。

  3. 还有其他建议吗?

1 个答案:

答案 0 :(得分:2)

您应该grouping commands代替:

{ tail -F /my/file | tee /dev/stderr; } | grep -q 'pattern'

现在grep会在找到模式时向管道中的上一个命令发送SIGPIPE