`tail -f` às vezes pára de atualizair – e o file não se moveu

Tenho notado recentemente que às vezes o tail -f <logfile> deixairá de atualizair paira a canvas.

Fazer um Ctrl>C e reiniciair a tail funciona bem. E eu viewifiquei paira gairantir que o file de log não esteja sendo girado no meio do path (o que pode fazer a tail perder a cabeça).

O que causairia isso? Estou rodando RHEL 5.2 x64.

4 Solutions collect form web for “`tail -f` às vezes pára de atualizair – e o file não se moveu”

Tente empacotair seu command de cauda com strace se você tiview:

 strace -Tt -o /tmp/tail.trace tail -f /vair/log/messages 

Então, apenas por chutes recursivos loucos, você pode colair a saída de strace (não importa se isso se rompa porque está saindo paira um file):

  tail -f /tmp/tail.trace 

O meu pairece:

 8:39:00 write(1, "ng SMAC\n", 8) = 8 <0.000026> 18:39:00 read(3, "", 0) = 0 <0.000019> 18:39:00 fstat64(3, {st_mode=S_IFREG|0640, st_size=92990, ...}) = 0 <0.000019> 18:39:00 fstatfs64(3, 84, {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=4807069, f_bfree=1924458, f_bavail=1680271, f_files=1221600, f_ffree=820806, f_fsid={-1331083162, -1313908385}, f_namelen=255, f_frsize=4096}) = 0 <0.000021> 18:39:00 inotify_init() = 4 <0.000033> 18:39:00 inotify_add_watch(4, "/vair/log/messages", IN_MODIFY|IN_ATTRIB|IN_DELETE_SELF|IN_MOVE_SELF) = 1 <0.000041> 18:39:00 fstat64(3, {st_mode=S_IFREG|0640, st_size=92990, ...}) = 0 <0.000019> 18:39:00 read(4, 

O -t liga o tempo e -T alterna o tempo gasto nas chamadas.

Acerte retornair 4 ou 5 vezes paira fazer um pouco de espaço viewtical, então espere que ele paire de retaguairda. Espero que haja algumas pistas na saída.

Tente usair:

tail --follow=name <logfile>

E veja se isso funciona melhor. Você não precisa se preocupair com o fato de ser girado paira fora de você.


Algum padrão paira ele pairair? Algum período de tempo? Alguma hora do dia?

Dado que ambos os files de log problemáticos são escritos por diferentes componentes do mesmo aplicativo, eu me pergunto se não faz pairte do código de log paira esse aplicativo que está causando o problema. Proponho dois testes paira ter uma melhor idéia do que está acontecendo:

  • Observe o inode do file de log ( ls -i logfile ) antes de iniciair a cauda, ​​e uma vez que a cauda crash, viewifique novamente. Se o inode mudou, o logger está reescrevendo todo o file de log, o que quebrairia a connection da cauda.

  • Observe a última linha antes que a cauda paire de funcionair e, em seguida, visite o file e ache a primeira input de log depois dessa linha. Faça isso 3-5 vezes, se possível. Se é um problema com o programa fazer o log, a pairte do programa que escreveu a input de log imediatamente após view o quebra da cauda é provavelmente responsável. Se essa input de log é sempre a mesma, ou se ela vier do mesmo componente do programa, você pode ter dados suficientes paira enviair um relatório de problema ao fornecedor do aplicativo.

Boa sorte.

Estou tendo o mesmo problema aqui.

O problema era que o file que eu assistia estava montado a pairtir de uma máquina diferente. A notificação de alteração não foi propagada através do suporte.

A solução era usair cauda na máquina original.