GNU/Linux >> Linux Esercitazione >  >> Ubuntu

"tail -f" non seguirà il Syslog durante l'esecuzione dal vivo?

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


Ubuntu
  1. Perché il cursore salta durante la digitazione?

  2. The Point Of The Bash Null-operatore “:”, Colon?

  3. W:Problema durante lo scollegamento degli elenchi di file:errore di pulizia (21:è una directory) durante l'esecuzione di "sudo Apt-get Update"?

  4. Come mantenere in funzione i contenitori Docker quando il demone si ferma

  5. Perché `tail -f … | grep -q …` chiude quando trova una corrispondenza?

Come visualizzare i dati con il comando Tail in Linux

Ubuntu:eseguire un comando quando viene inserito un Cd/dvd/bd?

Perché posso vedere l'output dei processi in background?

Conferma automatica durante l'esecuzione di script Bash?

Google Chrome lascia i processi attivi dopo la chiusura?

Come eseguire un file .sh all'inizio della sessione?