GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿`tail -f` no seguirá el Syslog cuando se ejecuta en vivo?

Quiero monitorear /var/log/syslog para cualquier cambio en tiempo real (o dentro de unos pocos segundos de tiempo), pero tail -f no se actualizará con ningún cambio nuevo.

Estoy ejecutando Linux Mint 17 XFCE basado en Ubuntu en vivo ahora, pero esto tampoco ha funcionado en versiones iso en vivo de Ubuntu, Xubuntu o Linux Mint Mate.

He probado estos:

$ 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

Pero inicialmente solo muestra las últimas líneas del archivo, luego no se actualiza cuando el archivo crece (cuando, por ejemplo, al intentar montar un archivo vacío se producen alrededor de 15 líneas de errores).

En realidad, incluso tratar de seguir un archivo de prueba en mi carpeta de inicio no parece funcionar, ejecutando tail -f testfile y luego (en otra terminal):
$ echo "new stuff" >> testfile
$ echo "new stuff2" >> testfile
$ echo "3" >> testfile
no da como resultado ninguna actualización de tail tampoco…
Pero si pongo testfile en /tmp (montado en un tmpfs) entonces lo hace siga los cambios del archivo.

¿Por qué no sigue la cola?

¿Hay algo extraño en la ejecución en vivo o superposiciones que paralizan tail -f? ? ¿Y alguna sugerencia sobre cómo seguir el registro? (xwatch funciona bien, ¿algo mejor o en terminal?)

Intenté ejecutar strace tail -f -s 1 testfile y aquí están las últimas dos líneas de salida, después write(1, son las dos líneas existentes de 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, 

Respuesta aceptada:

tail usa inotify que no funciona con overlayfs Vea este informe de error y esta discusión. @ Xen2050 señaló el ---disable-inotify cambiar a tail Vea esta solución

Podrías usar apt-src para instalar coreutils source y recompilar tail con -UHAVE_INOTIFY


Ubuntu
  1. Cómo usar el comando tail en Ubuntu Linux

  2. Ubuntu:¿ejecutar un comando cuando se inserta un Cd/dvd/bd?

  3. ¿Errores al ejecutar Apt-get Update?

  4. The Point Of The Bash Null-operator “:”, Colon?

  5. W:Problema al desvincular las listas de archivos:error de limpieza (21:es un directorio) al ejecutar 'sudo Apt-get Update'?

Cómo ver datos con el comando Tail en Linux

¿Por qué puedo ver la salida de los procesos en segundo plano?

¿Puedo actualizar el sistema con un Live Cd?

¿Cómo ejecutar un archivo .sh cuando comienza la sesión?

¿Por qué `tail -f no es … | grep -q …` ¿dejar de fumar cuando encuentra una coincidencia?

Uso de la cola para seguir un archivo sin mostrar las líneas más recientes