Voglio monitorare /var/log/syslog
per eventuali modifiche in tempo reale (o entro pochi secondi di tempo), ma tail -f
non si aggiornerà con nuove modifiche.
Ora sto eseguendo Linux Mint 17 XFCE basato su Ubuntu dal vivo, ma questo non ha funzionato nemmeno su iso live di Ubuntu, Xubuntu o Linux Mint Mate.
Ho provato questi:
$ 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
Ma inizialmente genera solo le ultime righe del file, quindi nessun aggiornamento quando il file cresce (quando, ad esempio, il tentativo di montare un file vuoto dà circa 15 righe di errore).
In realtà, anche provare a seguire un file di test nella mia cartella home non sembra funzionare, eseguendo tail -f testfile
e poi (in un altro terminale):$ echo "new stuff" >> testfile
$ echo "new stuff2" >> testfile
$ echo "3" >> testfile
non comporta alcun aggiornamento per tail
o...
Ma se metto testfile
in /tmp
(montato su un tmpfs) allora fa segui le modifiche del file.
Perché la coda non segue?
C'è qualcosa di strano nell'esecuzione live, o overlayfs che paralizza tail -f
? E qualche suggerimento su come seguire il registro? (xwatch
funziona bene, niente di meglio o nel terminale?)
Ho provato a eseguire strace tail -f -s 1 testfile
ed ecco le ultime due righe di output, dopo write(1,
sono le coppie di righe esistenti di 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,
Risposta accettata:
tail
utilizza inotify
che non funziona con overlayfs
Vedi questa segnalazione di bug e questa discussione. @Xen2050 ha evidenziato il ---disable-inotify
passa a tail
Vedi questa soluzione alternativa
Potresti usare apt-src
per installare le coreutils
sorgente e ricompila tail
con -UHAVE_INOTIFY