1

我想跟踪一个文件并输出它的内容,直到达到某种模式。目前,我正在这样做:

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

这很好用,但这里的问题是,即使这个 bash 进程退出,也会有一个 tail 进程。这对 Rundeck 来说是个问题,因为它会认为我的命令还没有完成。我已经尝试了这些选项:

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

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

还有其他建议吗?

4

1 回答 1

2

You should be grouping commands instead:

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

Now grep would send a SIGPIPE to the previous command in the pipeline when it finds the pattern.

于 2014-05-23T05:28:31.207 回答