61 votes

Alternative pour "tail -f" qui suit le nom du fichier

J'ai quelques journaux générés à l'aide d'un enregistreur de fichiers rotatifs temporisés. Ces journaux sont enregistrés dans un fichier appelé tool.log et, à minuit, le déplace vers tool.log.<date> et lance une nouvelle tool.log .

J'ai un tail -f tool.log en cours d'exécution sur la machine pour garder un œil sur les journaux, mais à minuit, lorsque tool.log est renommé en tool.log.<date> , tail continue à surveiller le fichier renommé.

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

Est-ce que quelque chose comme ça existe ? Si non, je peux écrire le mien en Python dans ce but.

93voto

Toby Speight Points 4636

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

-F
même que --follow=name --retry

-f , --follow [ = { nom | descripteur }]
sortir les données ajoutées au fur et à mesure que le fichier s'agrandit ; -f , --follow y --follow=descriptor sont équivalentes

--retry
continuer à essayer d'ouvrir un fichier même s'il est ou devient inaccessible ; utile lorsque le fichier est suivi par son nom, c'est-à-dire, avec --follow=name

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

  • GNU - a -F comme décrit ci-dessus
  • Mac OS X , FreeBSD y NetBSD - ont un comportement similaire -F option avec le même effet
  • OpenBSD - -f est suffisant (si le fichier est remplacé (c'est-à-dire que le numéro d'inode change), tail rouvrira le fichier et continuera)
  • Solaris - aucun équivalent
  • Busybox - -F est disponible dans les versions récentes, mais doit être compilé avec ENABLE_FEATURE_FANCY_TAIL (il n'est pas compilé par défaut)

55voto

Oleg Bolden Points 1637

L'alternative est tail -F commandement.

En -F l'option implique --follow=name avec --retry pour que tail surveille votre fichier même s'il a été supprimé et recréé.

5voto

VL-80 Points 4415

Puisque vous avez demandé alternative :

En less pourrait être une alternative pour tail -F .

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

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

4voto

Shuaib Nawaz Points 745

Une autre alternative serait d'utiliser l'option watch 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 + C pour quitter la commande lorsque vous avez fini de consulter le journal.

3voto

Wayne Werner Points 1951

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

Vous pouvez également le faire pointer vers un répertoire et il suivra tous les fichiers de ce répertoire, en plus de toutes sortes d'autres fonctionnalités intéressantes.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X