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?


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

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

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.


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.