Comment faire un `tail -f` de fichiers tournés du journal?

106

Sur un système long, j’ai généralement un terminal avec

$ tail -f /var/log/kern.log

ou quelque chose comme ça ouvert.

Mais de temps en temps je dois redémarrer une telle commande car plus aucun nouveau message n'est affiché.

Je suppose que cela est dû au travail de rotation du journal qui a remplacé le fichier journal qui tail -fétait en train de «regarder».

Comment puis-je éviter ces problèmes de redémarrage?

Puis-je invoquer de tailtelle sorte qu'il remarque le processus de rotation et fasse ce qui est juste?

(Je remarque ce problème sur un système Ubuntu 11.04 qui utilise rsyslogdpar défaut.)

maxschlepzig
la source

Réponses:

162

Utilisez l' -Foption à la place:

tail -F /var/log/kern.log

L' -Foption indique tailde suivre les modifications apportées au fichier par nom de fichier, au lieu d'utiliser le numéro d'inode qui change pendant la rotation. Il continuera également d'essayer d'ouvrir le fichier s'il n'est pas présent.

Andcoz
la source
7
Génial, oui je le suis. (pour mémoire, il s’agit d’une option GNU tail - où GNU tail est bien sûr la valeur par défaut sous Ubuntu).
maxschlepzig
Vous avez raison: - / Je n'ai pas remarqué qu'Ubuntu dans votre question n'était qu'un exemple.
andcoz
pas un problème du tout - je viens de commenter pour être complet (parfois je veux juste regarder ce qui est POSIX et ce qui ne l'est pas). La question portait en effet à peu près sur Ubuntu.
maxschlepzig
1
Est tail -F /var/log/kern.logéquivalent à tail -f --follow=name --retry /var/log/kern.log?
Basj
1
@Basj - selon man7.org/linux/man-pages/man1/tail.1.html c'est équivalent
andrej