GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Folgt `tail -f` nicht dem Syslog, wenn es live läuft?

Ich möchte /var/log/syslog überwachen für alle Änderungen in Echtzeit (oder innerhalb weniger Sekunden), aber tail -f wird nicht mit neuen Änderungen aktualisiert.

Ich verwende jetzt Ubuntu-basiertes Linux Mint 17 XFCE live, aber das hat auch nicht mit Live-ISOs von Ubuntu, Xubuntu oder Linux Mint Mate funktioniert.

Ich habe diese ausprobiert:

$ tail -f /var/log/syslog
$ tail -f --retry -s 1 /var/log/syslog
$ tail --follow=name /var/log/syslog
$ tail --follow=name --retry /var/log/syslog
$ tail --follow=name --retry -s 1 /var/log/syslog

Aber es gibt anfangs nur die letzten paar Zeilen der Datei aus, dann keine Aktualisierungen, wenn die Datei wächst (wenn zum Beispiel versucht wird, eine leere Datei zu mounten, gibt es ungefähr 15 Zeilen mit Fehlern).

Tatsächlich scheint sogar der Versuch, einer Testdatei in meinem Home-Ordner zu folgen, nicht zu funktionieren, indem tail -f testfile ausgeführt wird und dann (in einem anderen Terminal):
$ echo "new stuff" >> testfile
$ echo "new stuff2" >> testfile
$ echo "3" >> testfile
führt zu keinen Aktualisierungen von tail entweder…
Aber wenn ich testfile einfüge in /tmp (montiert auf einem tmpfs) dann macht es Folgen Sie den Änderungen der Datei.

Warum folgt der Schwanz nicht?

Gibt es etwas Seltsames beim Live-Laufen oder Overlayfs, die tail -f lahmlegen ? Und irgendwelche Vorschläge, wie man dem Protokoll folgen kann? (xwatch funktioniert ok, irgendetwas besser oder im Terminal?)

Ich habe versucht, strace tail -f -s 1 testfile auszuführen und hier sind die letzten paar Zeilen der Ausgabe, danach write(1, sind die vorhandenen paar Zeilen von testfile :

write(1, "new1\n", 5new1
)                   = 5
fstat64(3, {st_mode=S_IFREG|0644, st_size=22, ...}) = 0
fstatfs64(3, 84, {f_type=0x1021994, f_bsize=4096, f_blocks=968776, f_bfree=461437, f_bavail=461437, f_files=203469, f_ffree=190635, f_fsid={0, 0}, f_namelen=255, f_frsize=4096, f_flags=1056}) = 0
inotify_init()                          = 4
inotify_add_watch(4, "testfile", IN_MODIFY|IN_ATTRIB|IN_DELETE_SELF|IN_MOVE_SELF) = 1
fstat64(3, {st_mode=S_IFREG|0644, st_size=22, ...}) = 0
read(4, 

Akzeptierte Antwort:

tail verwendet inotify was mit overlayfs nicht funktioniert Siehe diesen Fehlerbericht und diese Diskussion. @Xen2050 wies auf ---disable-inotify hin wechsle zu tail Siehe diese Problemumgehung

Sie könnten apt-src verwenden um die coreutils zu installieren source und tail neu kompilieren mit -UHAVE_INOTIFY


Ubuntu
  1. Warum kann ich die Ausgabe von Hintergrundprozessen sehen?

  2. Automatische Bestätigung beim Ausführen von Bash-Skripten?

  3. Google Chrome verlässt Prozesse nach dem Schließen live?

  4. Warum springt der Cursor beim Tippen?

  5. Wenn ich den Computer starte, wird nur das Terminal angezeigt?

So zeigen Sie Daten mit dem Tail-Befehl in Linux an

Kann ich das System mit einer Live-CD aktualisieren?

Wie führe ich eine .sh-Datei aus, wenn die Sitzung beginnt?

Fehler beim Ausführen von Apt-get Update??

The Point Of The Bash Null-Operator „:“, Doppelpunkt?

W:Problem beim Aufheben der Verknüpfung der Dateilisten – Fehler Clean (21:Is A Directory) beim Ausführen von „sudo Apt-get Update“?