GNU/Linux >> Znalost Linux >  >> Linux

Shellscript pro sledování souboru protokolu, pokud klíčové slovo spustí a poté provede příkaz?

Také jsem zjistil, že můžete použít awk k monitorování vzoru a provést nějakou akci, když je vzor nalezen:

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

Toto provede příkaz, když je vzor nalezen v protokolu. Příkaz může být jakýkoli unixový příkaz včetně skriptů shellu nebo čehokoli jiného.


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

Ještě robustnější přístup je monit. Tento nástroj může monitorovat velmi mnoho věcí, ale jednou z nich je, že snadno zaznamená jeden nebo více protokolů, porovná se s regulárním výrazem a poté spustí skript. To je zvláště užitečné, pokud máte sbírku souborů protokolu ke sledování nebo více než jednu událost ke spuštění.


Linux
  1. Jak mohu zkontrolovat, zda soubor existuje, a provést příkaz, pokud ne?

  2. Jak ohraničit -f nejnovější soubor protokolu s daným vzorem

  3. Proveďte příkaz pro každý soubor v aktuálním adresáři

  1. Jak přihlásit každý příkaz zadaný do Bash a každou operaci se souborem?

  2. Proveďte příkaz, kde je nalezen soubor?

  3. Jak vytisknout výstup příkazu Linuxu do souboru?

  1. Jak změnit oprávnění pro určitý vzor souboru/příponu?

  2. Jak provést příkaz při každé změně souboru?

  3. Spustit konkrétní příkaz v daném adresáři bez cd'ingu?