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,