Descrivi l' tail
utilità GNU . La differenza tra questi due flag è che se apro un file, ad esempio un file di registro, come questo:
$ tail -f /var/log/messages
... e se la funzione di rotazione del registro sulla mia macchina decide di ruotare quel file di registro mentre guardo i messaggi che vengono scritti su di esso ("ruotare" significa eliminare o spostare in un'altra posizione ecc.), l'output che vedo sarà solo Stop.
Se apro il file in tail
questo modo:
$ tail -F /var/log/messages
... e ancora, il file viene ruotato, l'output continuerà a fluire nella mia console perché tail
riaprirà il file non appena sarà nuovamente disponibile, cioè quando i programmi che scrivono sul registro hanno iniziato a scrivere sul nuovo /var/log/messages
.
Sui sistemi BSD gratuiti, non esiste alcuna -F
opzione, ma tail -f
si comporterà come tail -F
sui sistemi GNU, con la differenza che ricevi il messaggio
tail: file has been replaced, reopening.
nell'output quando il file che stai monitorando scompare e ricompare.
PUOI PROVARE QUESTO
In una sessione di shell, fare
$ cat >myfile
Ora aspetterai che tu scriva cose. Basta andare avanti e digitare un po 'incomprensibile, alcune righe. Sarà tutto salvato nel file myfile
.
In un'altra sessione della shell (forse in un altro terminale, senza interromperecat
):
$ tail -f myfile
Questo mostrerà il (fine del) contenuto della myfile
console. Se torni alla prima sessione della shell e digiti qualcosa in più, quell'output verrà immediatamente mostrato dalla tail
seconda sessione della shell.
Ora esci cat
premendo Ctrl+De rimuovi il myfile
file:
$ rm myfile
Quindi eseguire nuovamente il gatto:
$ cat >myfile
... e digita qualcosa, poche righe.
Con GNU tail
, queste linee non verranno visualizzate nella seconda sessione della shell (dove tail -f
è ancora in esecuzione).
Ripeti l'esercizio con tail -F
e osserva la differenza.