tail -f non tiene traccia delle modifiche ai file


14

Mi è stato recentemente esaminando usando tail -fper monitorare alcuni file di testo in questo modo: tail -f /var/sometext.

Tuttavia, quando ho fatto alcuni test, non sembra funzionare. Quello che ho fatto è stato creare un nuovo file ed eseguire: tail -f /home/name/textQuindi, ho aperto il log in vim e fatto alcune modifiche, salvato, e sembra che tail non stia "vedendo" il cambiamento.

La cosa strana è che la corsa echo "hello" >> /home/name/textsembra funzionare bene (la coda vede il cambiamento). Ho letto da qualche parte che ciò ha a che fare con i descrittori di file e la creazione di nuovi inode durante il salvataggio di un file.

Qualcuno può spiegarmelo? Non ho capito bene come funzioni, ma ho idea di quali siano i descrittori di file.

Risposte:


29

-fsegue per inode. Se vuoi seguire per nome, come quando un programma ricrea completamente il file, usa -Finvece.


Bene, non l'ho mai saputo. Vale la pena leggere le manpage delle utility anche (soprattutto?) Se le usi sempre!
Lyle,

1

tail -f controlla la fine del file e quando si sposta la fine del file, stampa il nuovo contenuto e attende che la fine del file si sposti di nuovo. In altre parole, le modifiche nel mezzo del documento non saranno trovate da tail -f, ma solo in aggiunta.


-1

In realtà, la vera storia è:

tail -f controlla la memoria, non il disco. Ma non può accedere alla memoria protetta, ad esempio le modifiche a un file hanno aperto un editor di testo.


Il tail -fcomando opera su un file (descrittore di file dopo aver aperto il file). Sebbene in realtà le nuove modifiche del file siano ancora nella memoria (buffer, cache), non importa. tailaccede ancora al file tramite il descrittore di file. Non importa come viene modificato il file. --- La risposta di Ignacio Vazquez-Abrams è corretta: l'editor non modifica il file corrente (che è aperto in tail), salva le modifiche in un nuovo file con lo stesso nome di quello vecchio.
pabouk,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.