我正在使用 tail -f 来监视正在积极写入的日志文件。当某个字符串被写入日志文件时,我想退出监控,并继续我的脚本的其余部分。
目前我正在使用:
tail -f logfile.log | grep -m 1 "Server Started"
Run Code Online (Sandbox Code Playgroud)
找到字符串后,grep 按预期退出,但我需要找到一种方法使 tail 命令也退出,以便脚本可以继续。
背景:
我正在为一个计算生物学软件编写一个测试脚本。我正在测试的软件可能需要数天甚至数周才能运行,因此它具有内置的恢复功能,以防系统崩溃或电源故障。
我想弄清楚如何测试恢复系统。具体来说,我想不出一种以受控方式“崩溃”程序的方法。我正在考虑以某种方式在一段时间后对 SIGKILL 指令进行计时。这可能并不理想,因为不能保证测试用例每次都以相同的速度运行(它在共享环境中运行),因此将日志与所需的输出进行比较会很困难。
该软件确实为它完成的每个分析部分打印一行。
题:
我想知道是否有一种好的/优雅的方式(在 shell 脚本中)来捕获程序的输出,然后在程序输出给定的行/行数时终止程序?