启动进程并等待logfile具有特定条目

时间:2017-01-04 10:48:54

标签: bash process kill

我想在这样的bash脚本中启动一个进程:

myProcess -p someparameter > log.txt &

然后我想在log.txt包含defined sentence to wait for后立即停止该过程。 所以我不是在等待文件,而是等待日志文件中的条目!

最好的方法是什么(不用煎炸我的处理器,因此没有像疯狂一样运行的循环)?

1 个答案:

答案 0 :(得分:1)

在评论中,我表达了对这种解决方案稳定性的担忧,因为在监视程序检测到日志文件中的消息时,该进程可能已经进一步推进。

你对此说:The whole thing is about doing an automated analysis for one time on about 50 different inputs. Job done. It is not an academic exercise

好的,对于这样的用例,您可以执行以下操作:

# Use stdbuf -oL to make sure the process output
# will get line buffered (instead of default block-buffered)
stdbuf -oL ./process -p param > logfile &
pid=$!

# Again make sure that the output of tail get's
# line buffered. grep -m1 stops after the first
# occurence
stdbuf -oL tail -f logfile | grep -m1 "PATTERN" && kill "${pid}"

注意:我想在此示例中,processkill很好地退出。