Fin de la queue -f après l'impression de n lignes

10

J'ai ce qui suit.

  1. Un processus Java écrit des journaux sur fichier
  2. Un script shell démarrant le processus Java.

J'ai besoin de lire le fichier journal après le démarrage du processus Java pour vérifier le bon démarrage.

J'ai essayé avec tail -fmais ça reste pour toujours. J'ai besoin d' tailarrêter après avoir imprimé n lignes. Il existe un moyen comme -noption pour les lignes précédentes?

theShadow89
la source
1
Votre fichier journal est-il nettoyé à chaque fois, après l'exécution du processus Java par le script shell?
c0rp
J'utilise log4j avec le mode ajout pour écrire le fichier journal. Il tourne après que la dimension du fichier ait augmenté jusqu'à 10 Mo.
theShadow89

Réponses:

24

Vous pouvez diriger la sortie de tail -fvers headpour limiter le nombre de lignes affichées:

tail -f [PATH] | head -n 100

pour afficher uniquement 100 lignes au total.

David Foerster
la source
7

Nouvelles lignes uniquement

Avec la plaine tail -f, les 10 premières lignes proviennent du fichier tel qu'il existe déjà:

tail -f file.log | head -30

écrit 10 lignes de log.txtson exécution et 20 (n-10) lignes ajoutées ultérieurement.

Avec un fichier journal, vous utilisez normalement -f( --follow) pour voir les lignes écrites à l'avenir.

Pour ne voir que les 30 lignes qui ont été écrites après le taildémarrage, limitez la sortie initiale à 0:

tail -f -n0 file.log | head -30
Volker Siegel
la source