![遇到字符串失败时,记录并输出顶级进程](https://linux22.com/image/1632373/%E9%81%87%E5%88%B0%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%A4%B1%E8%B4%A5%E6%97%B6%EF%BC%8C%E8%AE%B0%E5%BD%95%E5%B9%B6%E8%BE%93%E5%87%BA%E9%A1%B6%E7%BA%A7%E8%BF%9B%E7%A8%8B.png)
我正在运行以下命令来跟踪日志文件并在遇到给定字符串时将顶级进程输出到文件中:
tail -f mylogfile.log | awk '
/server on fire/ { system("/bin/sh -c 'if [ -n `find snapshot.txt -mmin +30` ]; then top -n 1 -b | tee -a snapshot.txt; fi'") }'
此命令因语法错误而失败(可能是因为某些字符应该转义)并且我无法使其工作。请帮忙
注意: find 命令会检查自上次写入文件以来是否已过去至少 30 分钟
答案1
好的,我相信我终于让它工作了:
tail -f mylogfile.log | awk '
/server on fire/ { if (system("[ ! -f snapshot.txt ]") == 0 || system("find snapshot.txt -mmin +30 | grep -q .") == 0) system("top -n 1 -b >> snapshot.txt") }' &