先介绍一点背景知识:我们有 9 台 JVM 服务器正在输出日志文件,我会不断解析这些日志文件,以便在发生错误时查找这些文件。日志每 5-10 分钟滚动一次,但文件名不会更改。我正在使用 SupperPutty 打开 9 个会话并针对每个日志文件运行以下脚本,但这仅在我工作时才有效。
tail -f *filename* | nawk 'c-->0;$0~s{if(b)for(c=b+1;c>1;c--)print r[(NR-c+1)%b];print;c=a}b{r[NR%b]=$0}' b=2 a=4 s="Bind value for HASCHILDREN = 0"
所以我想把上面的脚本变成一个后台脚本,当发生错误时会通过电子邮件发送给我。我首先必须将 KSH 放入第二个 shell 以避免在我退出时停止脚本(即使我将它们设置为 NOHUP)。我尝试如下设置脚本,但发生错误时它不会给我发电子邮件。
tail -f *filename* | nawk 'c-->0;$0~s{if(b)for(c=b+1;c>1;c--)print r[(NR-c+1)%b];print;c=a}b{r[NR%b]=$0}' b=2 a=4 s="Bind value for HASCHILDREN = 0" | mailx -s "Childrens flag has been detected" *email* &
任何帮助将不胜感激。