我需要一些帮助:
在菜单中将执行尾部操作,然后在某个输出后尾部将被终止,我们将返回菜单。
tail -f server.log |
grep "Started successfully with " &&
echo "it is working" ||
echo "not working"
任何人都可以帮我做一个自动关闭尾部命令吗?
答案 0 :(得分:2)
你可以这样做:
tail -f server.log | awk '/Started successfully with/{print "it is working"; system("pkill tail"); exit}'
由于您使用的是"not working"
,因此无法打印tail -f
,并且您永远不知道您的搜索字符串不存在多长时间。
答案 1 :(得分:0)
@ anubhava的答案有效,但不需要awk
:
关键是将grep
与-m1
一起使用,这会在找到匹配后返回,此时tail
进程可以被终止:
tail -f server.log |
{ grep -m1 "Started successfully with " && pkill -P $$ -x tail; }
-P $$
(仅考虑当前shell的子进程)和-x
(完全匹配进程名称)确保只有tail
感兴趣的进程被终止。(...)
而不是命令分组{ ...; }
(效率稍低)。grep
仅在tail
外部被杀的情况下返回 - 报告此案例,添加一个||
条款;例如,|| echo 'ERROR: tail -f was killed' >&2