web-dev-qa-db-fra.com

Script Shell pour surveiller un fichier journal si un mot clé se déclenche puis exécuter une commande?

Existe-t-il un moyen économique de surveiller un fichier journal comme tail -f log.txt, alors si quelque chose comme [error] apparaît, exécuter une commande?

Je vous remercie.

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

J'ai également constaté que vous pouvez utiliser awk pour surveiller le modèle et effectuer une action lorsque le modèle est trouvé:

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

Cela exécutera la commande lorsque le modèle est trouvé dans le journal. La commande peut être n'importe quelle commande unix, y compris les scripts Shell ou toute autre chose.

13
user420783

Une approche encore plus robuste est monit . Cet outil peut surveiller de très nombreuses choses, mais l'un d'eux est qu'il va facilement suivre un ou plusieurs journaux, correspondre à l'expression régulière et ensuite déclencher un script. Cela est particulièrement utile si vous avez une collection de fichiers journaux à surveiller ou plusieurs événements à déclencher.

5
Ari Maniatis

Pâte et simple:

tail -f log.txt | egrep -m 1 "error"
echo "Found error, do sth."
...
0
Robin Du