Alternative pour “tail -f” qui suit le nom de fichier


59

Certains journaux sont générés à l'aide d'un enregistreur de fichiers rotatif chronométré. Cela enregistre dans un fichier appelé tool.log, et à minuit, le déplace tool.log.<date>et en commence un nouveau tool.log.

Je suis en tail -f tool.logtrain d’exécuter une tâche sur la machine pour surveiller les journaux, mais à minuit, lorsqu’il tool.logest renommé tool.log.<date>, tailcontinue de regarder le fichier renommé.

Ce que j'espère, c'est un outil similaire tail, mais qui continuera à surveiller le fichier nommé tool.logplutôt que de suivre l'inode.

Est-ce que quelque chose comme ça existe? Sinon, je peux écrire le mien en Python à cette fin.

Réponses:


90

Certaines implémentations de tailont une option pour cela; voici la description de la page de manuel de GNU tail:

-F
pareil que --follow=name --retry

-f, --follow[ ={ nom | descripteur }]
affiche les données ajoutées à mesure que le fichier s'agrandit; -f, --followet --follow=descriptorsont équivalents

--retry
continue d'essayer d'ouvrir un fichier même s'il est ou devient inaccessible; utile pour suivre son nom, c'est-à-dire avec--follow=name

Comme cette option n'est pas spécifiée par POSIX, vous ne pouvez pas en dépendre partout. Quelques implémentations connues:

  • GNU - a-Fcomme décrit ci-dessus
  • Mac OS X , FreeBSD et NetBSD - ont une-Foptionsimilaireavec le même effet
  • OpenBSD --fest suffisant (si le fichier est remplacé (c'est-à-dire que le numéro d'inode change), tail le rouvrira et continuera)
  • Solaris - pas d'équivalent
  • Busybox --Fest disponible dans les versions récentes, mais doit être compilé avecENABLE_FEATURE_FANCY_TAIL(ce n'est pas compilé par défaut)

55

L'alternative est la tail -Fcommande.

L' -Foption implique --follow=nameavec l' --retryoption, si la queue regarde votre dossier , même s'il a été supprimé et créé à nouveau.


5

Depuis que vous avez demandé une alternative :

L' lessutilitaire pourrait être une alternative pour tail -F.

Il devra être exécuté comme suit: less --follow-name filename.loget appuyez sur Shift+ F.

Cela vous donnera les mêmes résultats que tail -F.


Merci. J'étais seulement après une alternative parce que je n'étais pas au courant de la queue -F. Toujours bon de connaître les options bien.
— Hugh

4

Une autre alternative serait d'utiliser la watchcommande, qui répétera n'importe quelle commande toutes les n secondes, toutes les 2 secondes dans cet exemple:

watch -n2 "tail tool.log"

Utilisez Ctrl+ Cpour quitter la commande lorsque vous avez terminé d’afficher le journal.


1
Cela semble créer beaucoup de messages en double si le journal défile plus lentement que le minuteur d'actualisation et rater des messages s'il défile plus rapidement.
— Bobson

3
Watch prend tout l’écran pour ne pas dupliquer les messages, mais supprime la possibilité de revenir en arrière.
— Hugh

3

lnav est un autre outil fantastique qui suit le nom du fichier.

Vous pouvez également le diriger vers un répertoire et tous les fichiers de ce répertoire seront ajoutés à la liste, en plus de toutes sortes d’autres fonctionnalités intéressantes.


J'ai constaté qu'il ne gère pas les journaux pivotés tronqués et / ou renommés (je ne sais pas ce qui le perturbe dans mon cas particulier), de sorte que les journaux semblent s'arrêter à minuit, à moins que je ne redémarre lnav. Me manque-t-il un changement évident ou une technique pour cela? Je me demande alors que cela semble être quelque chose qu'il devrait prendre dans ses pas?
— Stuart Hickinbottom

Cela dépend de la façon dont le fichier est tronqué. Si vous passez l' -rindicateur à lnav, il rechargera le nom du fichier (et chargera les journaux précédemment convertis)
— Wayne Werner

1

Je ne suis pas sûr de pouvoir multitailgérer votre cas spécifique, mais je parie que c'est le cas. multitail fait à peu près tout ce que vous pourriez vouloir tailfaire.

https://en.wikipedia.org/wiki/MultiTail


1
Oui ça va - multitail -f <name1> -f <name2> -f <name3> .... Cet exemple montre plusieurs fichiers suivants simultanément, qui seront montrés dans des fenêtres séparées.
— Stuart Hickinbottom
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.