web-dev-qa-db-fra.com

Comment surveiller uniquement les n dernières lignes d'un fichier journal?

J'ai un fichier journal en pleine croissance pour lequel je veux afficher niquement les 15 dernières lignes. Voici ce que je sais que je peux faire:

tail -n 15 -F mylogfile.txt

Lorsque le fichier journal est rempli, tail ajoute les dernières lignes à l'affichage.

Je cherche une solution qui n'affiche que les 15 dernières lignes et se débarrasse des lignes avant les 15 dernières après sa mise à jour. Auriez-vous une idée?

117
Marc-Olivier Titeux

Il pourrait suffire d'utiliser la montre:

 $ watch tail -n 15 mylogfile.txt 
160
William Pursell

Si vous utilisez la montre, essayez le -n option pour contrôler l'intervalle entre chaque mise à jour.

Ainsi, ce qui suit appelle la queue toutes les 2 secondes

$ watch -n 2 tail -n 15 mylogfile.txt

tandis que celui-ci l'interroge toutes les 1 seconde

$ watch -n 1 tail -n 15 mylogfile.txt
25
Turgon

Vous pouvez diffuser le fichier journal en exécutant moins et en appuyant sur MAJ + F qui diffusera le fichier en utilisant moins. $ less mylogfile.txt Ensuite, appuyez simplement sur MAJ + F et il sera diffusé. Je pense que c'est pratique pour surveiller les fichiers journaux qui se mettent à jour.

13
Niklas

Vous trouvez peut-être le -d param à portée de main.

man watch

-d Mettez en évidence les différences entre les mises à jour successives. Option lira l'argument optionnel selon lequel les changements sont mis en évidence pour être permanents, permettant de voir ce qui a changé au moins une fois depuis la première itération.

8
michalzuber

Sous Solaris, AIX ou HPUX ou de type UNIX (y compris Linux), vous pouvez utiliser des scripts pour surveiller les journaux ou quelque chose comme ça:

while true; 
    clear; 
    do date; 
    echo ;
    echo "MONITORING LOG IN "/path/to/file.log": "; 
    echo "Obs.: Last 20 lines of a logfile:
    echo ;
    tail -20 /path/to/file.log;
    echo ;
sleep 5; 
done
0
João Gerardo