tail -f arquivo pára de mudar de nome

6

Eu quero o arquivo tail -f , mas vou buscá-lo depois de um mv .

A palavra-chave tail diz-me: -f significa --follow=descriptor , por isso mv não deve alterar o inode?

Por que tail -f parou de funcionar depois da renomeação?

    
por Psi 12.10.2014 / 19:57

1 resposta

3

Lendo tail sources, parece que não falha ao ler o arquivo renomeado, mas falha ao monitorar o status do arquivo.

Mais precisamente, tail parece se comportar dessa maneira (simplificada):

  1. lê o arquivo até o final;
  2. configure um relógio inotify para ser notado quando algo acontecer ao arquivo;
  3. quando um novo conteúdo é anexado ao arquivo, leia novamente até o final;
  4. retorne ao passo 2.

Quando você move o arquivo, inotify informa tail , que por sua vez decide descartar o arquivo da lista de arquivos monitorados. Parece ser intencional, embora não esteja claro para mim por que isso é assim (e eu esperaria que ele continuasse monitorando o arquivo após renomear). As linhas relevantes parecem ser estes .

Portanto, o problema não é com o sistema operacional Linux subjacente, mas com a maneira como tail manipula a renomeação de arquivos.

    
por 12.10.2014 / 22:45

Tags