Ouvrez un fichier texte et laissez-le se mettre à jour


20

Comment ouvrir un fichier texte et le laisser se mettre à jour lui-même? Similaire à la façon dont topfonctionne.

Je veux ouvrir un fichier journal et le regarder se mettre à jour à la volée.

Je viens d'essayer:

$ tail error.log

Mais je viens de réaliser qu'il montre simplement les lignes du fichier journal.

J'utilise RHEL 5.10


4
Utilisationtail -f error.log
garethTheRed

Ah, c'est donc tailla bonne façon de l'utiliser? Wow, je ne pensais vraiment pas pouvoir l'utiliser. Je m'attendais à une expression beaucoup plus longue.
Kevdog777

1
Pour votre information, alors que la queue est l'outil pour le travail, vous open a text file and let it update itselfpouvez littéralement y parvenir watch cat filename.
Cthulhu

1
@Cthulhu vous voulez dire watch cat filenameou similaire. watch filenameva tenter de s'exécuter filename.
terdon

@terdon Oui en effet.
Cthulhu

Réponses:


29

Vous recherchez tail -f error.log(de man tail):

   -f, --follow[={name|descriptor}]
          output appended data as the file grows; -f, --follow, and --fol‐
          low=descriptor are equivalent

Cela vous permettra de regarder un fichier et de voir les modifications qui y sont apportées.


Et cela n'utilisera pas beaucoup de ressources?
Kevdog777

1
@ Kevdog777 pas vraiment non. Vraisemblablement, il rouvre simplement le fichier toutes les quelques secondes pour le mettre à jour. C'est la façon classique de faire ce que vous voulez.
terdon

1
@terdon, il ne rouvre (peut rouvrir) qu'avec -F. Avec -felle lit juste chaque seconde. C'est comme un while cat; do sleep 1; done < file. Voir inotailsous Linux pour une queue plus réactive (permet inotifyde savoir quand le fichier est en cours de modification).
Stéphane Chazelas

@ StéphaneChazelas: Je suis sûr que c'est beaucoup plus efficace que ça. Je parierais qu'il utilise select ou poll pour voir si le fd est lisible, puis se met en veille jusqu'à ce que des données soient disponibles sur le fd. Bien que je puisse me tromper totalement.
Martin York, le

1
@LokiAstari, vous ne pouvez pas être beaucoup plus efficace qu'un readappel système à chaque seconde. Une "lecture" selectou pollsur un fichier normal retournerait toujours vrai car un read()ne bloque jamais sur un fichier normal, donc ne fonctionnerait pas. Cela dit, GNU tailutilise désormais inotifysous Linux, il inotailn'est donc plus nécessaire.
Stéphane Chazelas

20

Utilisez "moins" au lieu de "queue" pour le défilement arrière et la recherche

Vous pouvez utiliser tail -f error.logou, mieux: tail -F error.log.

Mais si vous souhaitez revenir en arrière dans le fichier, ce n'est pas très utile.

Avec

less +F error.log

vous obtenez la fonction de tail -f,
mais vous pouvez interrompre la lecture d'une nouvelle entrée avec Ctrl+ C.

Ensuite, vous êtes en lessmode normal ,
où vous pouvez revenir en arrière pour voir ce que vous avez peut-être manqué avec Up/. Down
En outre, vous pouvez lire de longues lignes de fichier journal sans encapsuler, en utilisant Left/Right

Rechercher et afficher uniquement les lignes correspondantes

Vous pouvez également rechercher des expressions régulières avec /, ?pour en arrière net Npour suivant / précédent.

Très intéressant pour les fichiers journaux, vous pouvez masquer toutes les lignes non correspondantes pour une recherche &, en filtrant uniquement les correspondances.

Touches en ligne de commande

Avec l' Fintérieur de less, vous continuez le tail -fmode -like.
La +ligne de commande less +Fsignifie "appuyez sur ces touches directement après avoir démarré moins".

Nous avons donc utilisé la touche clavier Fau démarrage, qui est décrite comme suit:

F  Scroll  forward,  and  keep trying to read when the end of file is
   reached.  Normally this command would be used when already at  the
   end  of the file.  It is a way to monitor the tail of a file which
   is growing while it is being viewed.  (The behavior is similar  to
   the "tail -f" command.)

Voir également multitailsi vous devez regarder plusieurs fichiers journaux.


Merci, mais tail -f error.logest parfait pour ce dont j'ai besoin. Le fichier journal n'est mis à jour que toutes les heures, il est donc suffisant pour mon utilisation :-)
Kevdog777

1
Assurez-vous de vous en souvenir pour la prochaine fois;)
Volker Siegel

mosta également un tail -fmode avec F.
Stéphane Chazelas

@ StéphaneChazelas à droite, merci! Hmmm ... Je me souviens que quelqu'un m'a remercié d'avoir mentionné il y a mostquelque temps ... et je l'ai oublié.
Volker Siegel du

@ StéphaneChazelas Mais alors, mostne semble-t-il pas avoir la fonction moins de filtre &pour n'afficher que les lignes correspondantes? Une fonctionnalité utile dans les fichiers journaux, généralement.
Volker Siegel du

5

Utilisez l' -foption avec tail:

-f, --follow [= {nom | descripteur}] affiche les données ajoutées au fur et à mesure de la croissance du fichier; -f, --follow et --follow = les descripteurs sont équivalents

Ou utilisez la Fcommande à l'intérieur less:

   F      Scroll forward, and keep trying to read when the end of file is reached.  Normally this command would be used when already at the end of the file.  It is a way to mon‐
          itor the tail of a file which is growing while it is being viewed.  (The behavior is similar to the "tail -f" command.)

Quoi de neuf dans cette réponse?
bluefoggy

1
Je ne comprends pas de quoi vous parlez. C'était la deuxième réponse à cette question et la première qui en faisait mention less.
Arkadiusz Drabczyk
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.