Yo estaba buscando recientemente a utilizar tail -f
para 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/text
Luego, 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/text
parece 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.
fuente
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
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.
fuente
tail -f
comando 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.tail
aú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á abiertotail
), guarda los cambios en un nuevo archivo con el mismo nombre que el anterior.