J'ai un logiciel qui fait tourner ses fichiers journaux au redémarrage. Cependant, pendant le développement, je le redémarre beaucoup, donc je voudrais surveiller le dernier fichier journal à tout moment.
Si je commence less
normalement par less program.log
et appuie sur Shift+ fà la fin, lorsque le fichier journal est tourné, je continue à surveiller l'ancien fichier journal. Je suppose que c'est parce que le numéro d'inode reste le même et less
a un descripteur de fichier ouvert pour cet inode.
Est-il possible de surveiller la dernière activité sur le fichier journal actuellement appelé program.log
?
Plus précisément, je travaille sur Sun OS, donc une solution qui fonctionne là-bas serait idéale.
tail -F program.log | less
fonctionnertail -f program.log
avez-vous essayé cela?Réponses:
À utiliser
less --follow-name
si votre version de leless
prend en charge. Cette option a été introduite dans la version 416.la source
L'
less
option--follow-name
n'est qu'une partie de la solution;Pour remplacer
tail -F
, un autre argument est nécessaire:L'option seule comme
less --follow-name file.log
ne démarre pas réellement après les mises à jour du fichier. Vous devez entrer dans le mode de suivi en appuyant sur ShiftF.(Quittez le mode pour naviguer ControlC.)
Au lieu de suivre le fichier,
--follow-name
modifie le comportement de less.Il fait la touche de commande à l' ShiftFintérieur de
less
suivre en fonction du nom de fichier, pas du descripteur de fichier.De plus, il n'y a pas d'option normale pour démarrer
less
en mode suivi.Mais vous pouvez utiliser la ligne de commande pour donner des touches à exécuter après le démarrage, en les préfixant avec
+
.La combinaison de l'option de modification avec
+F
,less
démarrera en fait dans le mode de suivi (modifié).Utiliser
+F
seul pour l'équivalent de plaintail -f
:la source
Je viens de trouver la réponse dans ce Q&R U&L intitulé: Comment faire un
tail -f
fichier de rotation de journal? .En utilisant
tail
:(si l'installation de GNU tail sur votre système est une option)
Depuis la page de manuel de tail :
La clé est l'
--retry
interrupteur. Cela indique à latail
commande de continuer à réessayer de suivre un fichier par son nom. Le-F
commutateur fait à la fois a-f
et a--retry
.En utilisant
less
Comme @StephaneChazela l'a souligné dans les commentaires, ce qui suit ne fonctionnera pas.
La seule autre option que vous avez est d'utiliser moins directement en supposant qu'il prend directement en charge le
--follow-name
commutateur etless
le fichier, sans utilisertail
complètement.la source
less
va se bloquer si vous faites "G" pr "F". Que vous pouvez interrompre en faisant "Ctrl-C", mais cela tue la queue. Vous pouvez ensuite immuniser la queue vers Ctrl-C, mais ce n'est toujours pas très utilisable.