Shell-Funktion zum Schwanz eine log-Datei nach einer bestimmten Zeichenfolge für eine bestimmte Zeit
Muss ich die folgenden Dinge um sicherzustellen, dass meine application server ist
- Schwanz eine log-Datei nach einem bestimmten string
- Bleiben blockiert, bis die Zeichenfolge gedruckt wird
- Allerdings, wenn der string wird nicht gedruckt für etwa 20 Minuten zu beenden und throw und Ausnahme-Meldung "Server dauerte mehr als 20 Minuten bis"
- Wenn die Zeichenfolge gedruckt wird in der log-Datei beenden Sie die Schleife und fahren Sie Fort.
Gibt es eine Möglichkeit um time-outs in einer while-Schleife ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Liest sich das alles geschrieben logfile, sucht certain_word, echos ok, wenn alles gut ist, sonst nach Wartezeit 1200 Sekunden (20 Minuten), beschwert es sich.
read
richtig timeout, Schwanz & grep wird weiter laufen, weil Sie werden benachrichtigtread
beenden nur, wenn Sie versuchen zu schreiben, output (was nie passiert, bis der match-string kommt).Kannst du es so machen:
Können Sie verwenden signal-Handler von shell-Skripten (siehe http://www.ibm.com/developerworks/aix/library/au-usingtraps/index.html).
Im Grunde, würde man eine Funktion definieren, die aufgerufen werden auf, sagen, signal 17, dann setzen Sie ein sub-Skript im hintergrund, die senden, dass das signal einige Zeit später:
Dann, wenn Sie bis zu 1200 Sekunden, Ihre Funktion wird aufgerufen, und Sie können wählen, was zu tun ist (wie signal your tail/grep-combo, die gerade für Ihr Muster, um es zu töten)
sleep 1
auch die Ausführungszeit.Akzeptiert die Antwort nicht funktioniert und wird niemals zu verlassen (weil althouth
read -t
beendet, die vor der pipe-Befehle (tail -f | grep
) werden nur benachrichtigtread -t
verlassen, wenn Sie versuchen zu schreiben, um die Ausgabe, die nie passiert, bis die Zeichenfolge entspricht).Einen one-liner ist wahrscheinlich machbar, aber hier sind gescriptet (Arbeits -) Ansätze.
Die Logik ist die gleiche für jede, die Sie verwenden
kill
zum beenden des aktuellen Skripts, nachdem das timeout.Perl ist wahrscheinlich weiter verbreitet als
gawk/read -t