Anmeldebildschirm beobachten (rotieren)

507
tr01

Ich betreibe einen Mailserver, zu dem ich mich mittels SSH verbinde. My .bash_profileist so konfiguriert, dass eine SSH-Sitzung an eine bestimmte screenSitzung angepasst wird .

Jetzt möchte ich ein Protokoll (z. B. das Syslog) in einem Fenster dieser Bildschirmsitzung drucken lassen. Ich habe versucht zu rennen

tail -f /var/log/syslog 

Die Ausgabe wird jeden Tag um 6:25 Uhr angehalten. Ich denke, das ist der Zeitpunkt, zu dem das Protokoll gedreht wird. Gibt es eine Möglichkeit, das Protokoll so zu drucken?

0

2 Antworten auf die Frage

1
kostix

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

Der Grund ist, dass standardmäßig - angeblich aus Leistungsgründen - tail die angegebene Datei geöffnet wird und dann der Dateideskriptor, den er von diesem open(2)Aufruf erhält, auf Änderungen überwacht wird . Dies funktioniert in Ordnung, solange die Datei geändert wird (angehängt oder sogar umgeschrieben wird (indem sie zuerst gekürzt wird)). Wenn die Datei ersetzt wird, funktioniert sie jedoch nicht mehr. Das heißt, sie wird entfernt und mit demselben Namen erstellt. Dies ist logrotatenormalerweise der Fall.

Der „Name“ -Modus der --followMarken tailverwenden, um einen teurer stat(2)syscall, die jedes Mal der Name der Datei über die Dateisystemebene „löst“ tatsächlich, und wenn taildie Datei geändert bemerkt seine sogenannten „inode“, tailwieder öffnet die Datei.

Die Ausgabe von man tail:

-f, --follow[=]

Angehängte Daten ausgeben, wenn die Datei wächst; ein fehlendes Optionsargument bedeutet 'Deskriptor'

Sie können auch die -FBefehlszeilenoption betrachten, die als definiert ist

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

0
favarofe

Ihre Vermutung ist eigentlich richtig. Zu diesem Zeitpunkt schreiben Syslog-Interruptschreiben in das Protokoll, erstellen Sie ein GZ-Protokoll und starten Sie das Protokoll erneut.

Sie könnten es versuchen

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

Auf diese Weise sollte das Tail erneut versuchen, die Datei erneut zu öffnen, nachdem die Protokollrotation durchgeführt wurde