Wie mache ich ein "tail -f" von loggedrehten Dateien?


106

Auf einem lang laufenden System habe ich normalerweise ein Terminal mit

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

oder so etwas offen.

Aber von Zeit zu Zeit muss ich einen solchen Befehl neu starten, da keine neuen Nachrichten mehr angezeigt werden.

Ich nehme an, das liegt daran, dass der rotierende Protokolljob, der die Protokolldatei ersetzt hat, tail -f"überwacht" hat.

Wie kann ich diese Neustartprobleme vermeiden?

Kann ich so aufrufen tail, dass es den rotierenden Prozess bemerkt und das Richtige tut?

(Dieses Problem tritt auf einem Ubuntu 11.04-System auf, das rsyslogdstandardmäßig verwendet wird.)


Antworten:


162

Verwenden Sie -Fstattdessen die Option:

tail -F /var/log/kern.log

Mit dieser -FOption können Sie tailÄnderungen an der Datei anhand des Dateinamens verfolgen, anstatt die Inode-Nummer zu verwenden, die sich während der Drehung ändert. Es wird auch weiterhin versucht, die Datei zu öffnen, wenn sie nicht vorhanden ist.


7
Genial, ja, das bin ich. (Nur zur Veranschaulichung, dies ist eine GNU-Tail-Option - wobei GNU-Tail natürlich die Standardeinstellung unter Ubuntu ist).
Maxschlepzig

Sie haben Recht: - / Ich habe nicht bemerkt, dass Ubuntu in Ihrer Frage nur ein Beispiel ist.
Andcoz

überhaupt kein Problem - ich habe nur der Vollständigkeit halber kommentiert (manchmal möchte ich nur schauen, was POSIX ist und was nicht). Die Frage war in der Tat ziemlich viel über Ubuntu.
Maxschlepzig

1
Ist tail -F /var/log/kern.loggleichbedeutend mit tail -f --follow=name --retry /var/log/kern.log?
Basj

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.