有一个日志文件,它不断地从本地服务器获取写入的行。
我想审核对该文件所做的任何更改,特别是对于术语重新启动。我试过这个:
while [ $(tail -f ../debug.log | grep -c "restarting") -eq 0 ]; do echo "Restart"; done
问题是 grep -c "restarting"
不返回任何内容,而 grep "restarting"
返回匹配的行。奇怪的是 cat
显示该行在那里,但 while
循环只是无限循环。怎么了?
此外,echo "Restart"
仅用于测试目的,最终我会pkill
处理并以代码 0 退出。
如果可以在后台运行 while
循环将是一个巨大的优势。
有人可以帮我解决这个问题吗?提前致谢!
答案 0 :(得分:0)
请随时关闭此问题@EdMorton,因为您已经使用 awk
给出了答案。
我最终选择了 sed
,并创建了一个名为 on_restart.sh 的文件:
#!/bin/sh
tail -f ../debug.log | sed -e '/process restarting/ q'
pkill -9 process; exit 0
在后台运行该文件就像./on_restart.sh &
一样简单。