Estou tentando observar qualquer nova saída de um arquivo de log. Outro script (que não está sob meu controle) está excluindo o arquivo e criando um novo com o mesmo nome. O uso tail -f
não funciona porque o arquivo está sendo excluído.
Estou tentando observar qualquer nova saída de um arquivo de log. Outro script (que não está sob meu controle) está excluindo o arquivo e criando um novo com o mesmo nome. O uso tail -f
não funciona porque o arquivo está sendo excluído.
Se o seu
tail
suporte, usetail -F
, funciona bem com arquivos que desaparecem e reaparecem. Apenas certifique-se de iniciartail
a partir de um diretório que permanecerá no lugar.-F
é uma abreviação de--follow=name --retry
:tail
seguirá os arquivos pelo nome em vez do descritor de arquivo e tentará novamente quando os arquivos estiverem inacessíveis ( por exemplo , porque foram excluídos).(Vários bugs relacionados a
--follow=name
foram--retry
corrigidos no coreutils 8.26, portanto, você pode ter problemas com versões anteriores; por exemplo , tentar novamente quando o diretório que contém o arquivo finalizado é excluído parece funcionar apenas em todos os casos com a versão 8.26 ou posterior.)Dê uma olhada no seu comando tail man, alguns têm:
que instrui
tail
a observar o nome e não o descritor como faz por padrão. Com essa opção, se o arquivo for excluído e recriado,tail
você o verá. Como está escrito no manual: