77 votes

Surveillance d'un fichier jusqu'à ce qu'une chaîne soit trouvée

J'utilise tail -f pour surveiller un fichier journal dans lequel on écrit activement. Lorsqu'une certaine chaîne est écrite dans le fichier journal, je veux arrêter la surveillance et continuer avec le reste de mon script.

Actuellement, j'utilise :

tail -f logfile.log | grep -m 1 "Server Started"

Lorsque la chaîne est trouvée, grep s'arrête comme prévu, mais je dois trouver un moyen de faire en sorte que les tail quitter aussi pour que le script puisse continuer.

0voto

Rick Henderson Points 111

Essayer d'utiliser inotify (inotifywait)

Vous configurez inotifywait pour tout changement de fichier, puis vérifiez le fichier avec grep, s'il n'est pas trouvé, relancez inotifywait, s'il est trouvé, sortez de la boucle... Quelque chose comme ça

0voto

Adrien Points 101

Vous voulez partir dès que la ligne est écrite, mais vous voulez aussi partir après un délai d'attente :

if (timeout 15s tail -F -n0 "stdout.log" &) | grep -q "The string that says the startup is successful" ; then
    echo "Application started with success."
else
    echo "Startup failed."
    tail stderr.log stdout.log
    exit 1
fi

0voto

Robin van Baalen Points 1177

J'avais besoin d'écrire une ligne dans le fichier journal après que la ligne soit apparue dans auth.log.

inspiré par la réponse ci-dessus

tail -f logfile.log | while read LOGLINE
do
[[ "${LOGLINE}" == *"Server Started"* ]] && pkill -P $$ tail
done

pour moi, ça a marché ensuite

tail -f -n0 /var/log/auth.log | while read LOGLINE;
do [[ "${LOGLINE}" == *"Removed session"* ]] && pkill -P $$ tail; 
echo "$(date "+%d-%m-%Y_%H:%M:%S") $(whoami) Screen_Locked poweroff" >> 
/var/log/lock-unlock-user.log; 
done

-2voto

Ather Points 1

Que pensez-vous de ça ?

tant que c'est vrai ; faire if [ ! -z $(grep "myRegEx" myLog.log) ] ; then break ; fi ; terminé

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X