/ / Sieh dir den (rotierenden) Anmeldebildschirm an - Debian, Gnu-Bildschirm, Syslog, Logrotate, Debian-Stretch

Beobachten Sie den (rotierenden) Anmeldebildschirm - debian, gnu-screen, syslog, logrotate, debian-stretch

Ich verwende einen Mailserver, mit dem ich mich √ľber SSH verbinde .bash_profile ist so konfiguriert, dass eine bestimmte SSH-Sitzung angegriffen wird screen Session.

Jetzt m√∂chte ich ein Protokoll (z. B. das Syslog) in einem Fenster dieser Bildschirmsitzung drucken lassen. Ich habe versucht, es auszuf√ľhren

tail -f /var/log/syslog

Die Ausgabe stoppt jedoch jeden Tag um 6:25 Uhr. Ich denke, dass dies der Zeitpunkt ist, an dem das Protokoll gedreht wird. Gibt es eine Möglichkeit, das Protokoll so auszudrucken?

Antworten:

1 f√ľr Antwort ‚ĄĖ 1

Du brauchst tail --follow=name /var/log/syslog

Der Grund ist, dass standardm√§√üig - angeblich aus Leistungsgr√ľnden -tail √∂ffnet die angegebene Datei und schaut dann zu der Dateideskriptor es erh√§lt davon open(2) Aufruf zur √Ąnderung. Dies funktioniert in Ordnung, solange die Datei ge√§ndert wird - angeh√§ngt oder sogar neu geschrieben (indem sie zuerst abgeschnitten wird), aber es funktioniert nicht mehr, wenn die Datei ge√§ndert wird ersetzt- das ist, entfernt und mit dem gleichen Namen erstellt, und das ist was logrotate in der Regel tut.

Der "Name" -Modus von --follow macht tail Verwenden Sie eine teurere stat(2) syscall, das den Dateinamen jedes Mal √ľber die Dateisystemebene "aufl√∂st", und if tail bemerkt, dass die Datei ihre sogenannte ge√§ndert hat "inode", tail √∂ffnet die Datei erneut.

Die Ausgabe von man tail:

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

gibt angehängte Daten aus, wenn die Datei wächst; Ein fehlendes Optionsargument bedeutet "Deskriptor".

Sie können sich auch das anschauen -F Befehlszeilenoption, definiert als

-F gleich wie --follow=name --retry


0 f√ľr Antwort ‚ĄĖ 2

Ihre Vermutung ist tatsächlich richtig. Zu diesem Zeitpunkt schreibt ein Syslog-Interrupt in das Protokoll, erstellt eine GZ daraus und startet das Protokoll erneut.

Sie könnten es mit versuchen

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

Auf diese Weise sollte tail erneut versuchen, die Datei zu öffnen, wenn die Protokollrotation abgeschlossen ist