Regarder (tourner) l'écran de connexion

0

J'utilise un serveur de courrier auquel je me connecte à l'aide de SSH. ma .bash_profile est configuré pour attacher une session SSH à un certain screen session.

J'aimerais maintenant qu'un journal (par exemple, le syslog) soit imprimé dans une fenêtre de cette session d'écran. J'ai essayé de courir

tail -f /var/log/syslog

mais la sortie s'arrête tous les jours à 6h25. Je suppose que c'est le moment où le journal est soumis à une rotation. Alors, y a-t-il un moyen d’avoir le journal imprimé pour écran?

tr01
la source

Réponses:

1

Vous avez besoin tail --follow=name /var/log/syslog

La raison en est que, par défaut, supposément pour des raisons de performances, tail ouvre le fichier spécifié, puis regarde le descripteur de fichier il obtient à partir de ce open(2) appeler pour des changements. Cela fonctionne tant que le fichier est modifié - ajouté ou même réécrit (en le tronquant d’abord), mais il cesse de fonctionner si le fichier est remplacé —C'est, supprimé et créé avec le même nom, et c'est ce que logrotate fait généralement.

Le mode "nom" de --follow fait du tail utiliser un plus coûteux stat(2) appel système qui "résout" réellement le nom du fichier à chaque fois via la couche système de fichiers, et si tail remarque le fichier a changé son soi-disant "inode" , tail rouvre le fichier.

La sortie de man tail:

-f, --follow[={name|descriptor}]

afficher les données ajoutées à mesure que le fichier s'agrandit;   un argument d'option absent signifie 'descripteur'

Vous pouvez aussi regarder le -F option de ligne de commande, définie comme

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

kostix
la source
0

Votre proposition est en fait correcte. À ce moment-là, syslog interrompt l'écriture dans le journal, créez-en un gz et redémarrez-le.

Tu pourrais essayer avec

tail -f --retry /var/log/syslog

De cette façon, tail devrait réessayer de rouvrir le fichier lorsque la rotation du journal a été effectuée.

favarofe
la source