Zunächst ein kurzer Hintergrund: Wir haben 9 JVM-Server, die Protokolldateien ausgeben, die ich ständig parsen, um zu finden, wann ein Fehler auftritt. Die Protokolle rollen alle 5-10 Minuten, aber der Dateiname ändert sich nicht. Früher habe ich SupperPutty verwendet, um 9 Sitzungen zu öffnen und das untenstehende Skript gegen jede Protokolldatei auszuführen, aber das war nur effektiv, wenn ich bei der Arbeit war.
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-Wert für HASCHILDREN = 0"
Also wollte ich das obige Skript in ein Hintergrundskript umwandeln, das mir eine E-Mail sendet, wenn ein Fehler auftritt. Zuerst musste ich mich in eine zweite Shell einloggen, um zu verhindern, dass die Skripte angehalten werden, wenn ich aussteige (auch wenn ich sie als NOHUP eingerichtet hatte). Ich habe versucht, das Skript wie unten gezeigt einzurichten, aber es sendet mir keine E-Mail, wenn der Fehler auftritt.
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-Wert für HASCHILDREN = 0" | mailx -s "Kinderflag wurde erkannt" *email* &
Jede Hilfe wäre sehr geschätzt.