Por que o 'tail -f' não segue meu syslog ao vivo?

3

Eu quero monitorar /var/log/syslog para quaisquer alterações em tempo real (ou dentro de alguns segundos), mas tail -f não será atualizado com novas alterações.

Eu estou executando o Linux Mint 17 XFCE baseado no Ubuntu ao vivo agora, mas isso também não funcionou nas versões do Ubuntu, Xubuntu ou Linux Mint Mate.

Eu tentei estes:

$ tail -f /var/log/syslog em $ tail -f --retry -s 1 /var/log/syslog em $ tail --follow=name /var/log/syslog em $ tail --follow=name --retry /var/log/syslog em $ tail --follow=name --retry -s 1 /var/log/syslog

Mas, inicialmente, apenas produz as últimas linhas do arquivo, então não há atualizações quando o arquivo cresce (quando, por exemplo, tentar montar um arquivo vazio dá cerca de 15 linhas de erros).

Na verdade, até mesmo tentar seguir um arquivo de teste na minha pasta de início parece não funcionar, executando tail -f testfile e depois (em outro terminal):
$ echo "new stuff" >> testfile
$ echo "new stuff2" >> testfile
$ echo "3" >> testfile
não resulta em atualizações para tail ... ou ...
Mas se eu colocar testfile em /tmp (montado em um tmpfs) então faz seguir as mudanças do arquivo.

Por que a cauda não segue?

Existe algo estranho sobre a execução ao vivo ou overlayfs que aleijam tail -f ? E alguma sugestão de como seguir o log? ( xwatch funciona ok, alguma coisa melhor ou no terminal?)

Eu tentei executar strace tail -f -s 1 testfile e aqui estão as últimas duas linhas de saída, após write(1, das linhas 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, 
    
por Xen2050 21.12.2014 / 13:20

1 resposta

3

tail usa inotify , o que não funciona com overlayfs Consulte este relatório de bug e esta discussão . @ Xen2050 apontou a opção ---disable-inotify para tail Consulte esta solução alternativa

Você pode usar apt-src para instalar a coreutils source e recompilar tail com -UHAVE_INOTIFY

    
por waltinator 22.01.2015 / 16:40