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.
tail -fn0 logfile | \
while read line ; do
echo "$line" | grep "pattern"
if [ $? = 0 ]
then
... do something ...
fi
done
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.
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.
Pâte et simple:
tail -f log.txt | egrep -m 1 "error"
echo "Found error, do sth."
...