我有一个日志文件,偶尔会出现严重错误。每次发生严重错误时,我都希望向自己发送一封电子邮件,通知我所做的更改。是否有我可以为此目的调整的 unix 工具/一组 unix 工具?
我想做的是
tail -f logfile | grep CRITICAL > critical.errors
watch tail critical.errors # And somehow, email on changes.
Run Code Online (Sandbox Code Playgroud)
但是, watch 命令不会执行任何操作。所以......有没有像'watch'这样的东西。或者也许是一个很好的现有脚本可以做到这一点?我可以自制一个 bash/python 解决方案,但我宁愿重用现有工具来进行更清晰的错误处理等。
试试 IWatch - 这是一个基于 inotify 的 perl 脚本,可以满足您的需求:
http://sourceforge.net/projects/iwatch/
您也可以使用inotify-tools自行推出,尤其是inotifywait
。从该页面修改示例 #2(未经测试):
#!/bin/sh
file=logfile
cp $file $file.last
while true; do
EVENT=$(inotifywait --format '%e' $file)
[ $? != 0 ] && exit
[ "$EVENT" = "MODIFY" ] && ( diff $file $file.last | mail ... ) && cp $file $file.last
done
Run Code Online (Sandbox Code Playgroud)
您还可以保留一个字节/行计数器并仅邮寄新的字节/行,但使用 diff 更简单。如果文件变大并且不断变化,它可能会导致性能问题。
归档时间: |
|
查看次数: |
1170 次 |
最近记录: |