tail -f no rastrea cambios en el archivo

14

Yo estaba buscando recientemente a utilizar tail -fpara monitorear algunos archivos de texto, así: tail -f /var/sometext.

Sin embargo, cuando hice algunas pruebas, no parece funcionar. Lo que hice fue crear un nuevo archivo y ejecutarlo: tail -f /home/name/textLuego, abrí el registro en vim e hice algunas modificaciones, lo guardé, y parece que la cola no está "viendo" el cambio.

Lo extraño es que correr echo "hello" >> /home/name/textparece funcionar bien (la cola ve el cambio). Leí en alguna parte que esto tiene algo que ver con los descriptores de archivo y los nuevos inodes que se crean al guardar un archivo.

¿Alguien puede explicar esto por mí? No entendí bien cómo funciona esto realmente, pero tengo una idea de qué son los descriptores de archivos.

Alex.K.
fuente

Respuestas:

29

-fsigue por inode. Si desea seguir por nombre, como cuando un programa recrea completamente el archivo, use -Fen su lugar.

Ignacio Vazquez-Abrams
fuente
Genial, nunca lo supe. ¡Vale la pena leer las páginas de manual de utilidades incluso (especialmente?) Si las usa todo el tiempo!
Lyle el
1

tail -f mira el final del archivo, y cuando el final del archivo se mueve, imprime el nuevo contenido y espera a que el final del archivo se mueva nuevamente. En otras palabras, los cambios en el medio del documento no se encontrarán mediante tail -f, solo anexando.


fuente
-1

En realidad, la verdadera historia es:

tail -f supervisa la memoria, no el disco. Pero no puede acceder a la memoria protegida, como las ediciones en un archivo que abre un editor de texto.

fragileswan
fuente
El tail -fcomando opera en un archivo (descriptor de archivo después de abrir el archivo). Aunque, de hecho, las nuevas modificaciones del archivo todavía están en la memoria (buffers, caché) no importa. tailaún accede al archivo a través del descriptor de archivo. No importa cómo se modifique el archivo. --- La respuesta de Ignacio Vázquez-Abrams es correcta: el editor no modifica el archivo actual (que está abierto tail), guarda los cambios en un nuevo archivo con el mismo nombre que el anterior.
pabouk