GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Shellscript zum Überwachen einer Protokolldatei, wenn ein Schlüsselwort auslöst und dann einen Befehl ausführt?

Ich habe auch herausgefunden, dass Sie awk verwenden können, um Muster zu überwachen und eine Aktion auszuführen, wenn ein Muster gefunden wird:

tail -fn0 logfile | awk '/pattern/ { print | "command" }'

Dadurch wird der Befehl ausgeführt, wenn ein Muster im Protokoll gefunden wird. Der Befehl kann ein beliebiger Unix-Befehl sein, einschließlich Shell-Skripten oder irgendetwas anderem.


tail -fn0 logfile | \
while read line ; do
        echo "$line" | grep "pattern"
        if [ $? = 0 ]
        then
                ... do something ...
        fi
done

Ein noch robusterer Ansatz ist monit. Dieses Tool kann sehr viele Dinge überwachen, aber eines davon ist, dass es einfach ein oder mehrere Protokolle verfolgt, mit regulären Ausdrücken abgleicht und dann ein Skript auslöst. Dies ist besonders nützlich, wenn Sie eine Sammlung von Protokolldateien überwachen oder mehr als ein Ereignis auslösen möchten.


Linux
  1. Einen Befehl ausführen, wo eine Datei gefunden wird?

  2. Befehl für jede Datei im aktuellen Verzeichnis ausführen

  3. Wie ändere ich die Berechtigungen für bestimmte Dateimuster/-erweiterungen?

  4. Wie drucke ich die Linux-Befehlsausgabe in eine Datei?

  5. Einen bestimmten Befehl in einem bestimmten Verzeichnis ausführen, ohne dazu zu wechseln?

Linux-Dateibefehl

Weniger Befehl unter Linux

Bash-Quellbefehl

Gzip-Befehl unter Linux

Gunzip-Befehl unter Linux

HowTo:Das ultimative Logrotate-Befehls-Tutorial mit 10 Beispielen