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

110

J'ai un fichier journal en croissance pour lequel je veux afficher uniquement 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, tailajoute les dernières lignes à l’affichage.

Je recherche une solution qui affiche uniquement les 15 dernières lignes et supprime les lignes avant les 15 dernières lignes après la mise à jour. Aurais-tu une idée?

Marc-Olivier Titeux
la source
28
Redimensionnez la fenêtre de votre terminal à 15 lignes.
Jonathan
1
C'est un bon aussi.
Marc-Olivier Titeux
3
@ Jonathan génie!
Marsellus Wallace
Je n'ai pas pu voter le commentaire de Jonathan ou il a perdu le goût d'avoir 15 votes positifs
mardi

Réponses:

151

Il pourrait suffire d’utiliser watch:

$ watch tail -n 15 mylogfile.txt
William Pursell
la source
1
Génial! Merci beaucoup. J'apprends aussi la commande 'watch' dans le processus.
Marc-Olivier Titeux le
1
Sachez que cette solution ne fonctionne pas si le fichier contient plus de 15 lignes entre deux watchmises à jour. Vous pouvez utiliser -npour modifier cet intervalle.
bfontaine
25

Si vous utilisez watch, essayez d’utiliser l’ -noption 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

alors que celui-ci le scrute toutes les 1 secondes

$ watch -n 1 tail -n 15 mylogfile.txt
Turgon
la source
13

Vous pouvez diffuser le fichier journal en exécutant moins et en appuyant sur Maj + F pour diffuser le fichier en utilisant moins. $ less mylogfile.txt Ensuite, appuyez simplement sur SHIFT + F et il sera diffusé. Je pense que cela est pratique pour surveiller les fichiers journaux mis à jour.

Niklas Rosencrantz
la source
1
C'est une très belle!
Kaiser
8

Peut-être que vous trouvez le -dparam utile.

man watch

-d Souligne les différences entre les mises à jour successives. Option lit l'argument facultatif que les modifications mettent en évidence comme permanent, permettant ainsi de voir ce qui a changé au moins une fois depuis la première itération.

Michalzuber
la source
1
Bonne prise aussi!
Marc-Olivier Titeux
0

Sous Solaris, AIX, HPUX ou UNIX (y compris Linux), vous pouvez utiliser des scripts pour surveiller les journaux ou toute opération similaire:

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
João Gerardo
la source