Como fazer com que a cauda se reconecte automaticamente a um arquivo de log que foi excluído e recriado junto com seu diretório pai

0

Estou usando a cauda com a opção --follow=name para assistir meus arquivos de log na minha instância de servicemix (caminho = ${smx_home}/data/log/servicemix.log ).

ServiceMix tem um recurso 'legal' para reiniciar limpo com servicemix clean que inicia novo sem cache e parece que também remove todo o diretório $ {smx_home} / data.

Quando a pasta e o arquivo de log são excluídos, a mensagem é exibida:

tail: data/log/servicemix.log: No such file or directory

e eu tenho que apertar ctrl-C e reiniciar meu comando tail como

tail --follow=name data/log/servicemix.log

O problema ocorre porque o 'início limpo' do ServiceMix remove o diretório inteiro e não apenas o arquivo e o inode inicial é inválido.

Existe alguma maneira de fazer a cauda para se reconectar ao log excluído?

Se a cauda não funcionar, existe alguma outra alternativa (por exemplo, com more ou less )?

ATUALIZAÇÃO:

Também testei várias combinações com -F --follow e --retry

tail --follow=name --retry data/log/servicemix.log

e isso não está funcionando também.

Minha versão final é

tail (GNU coreutils) 8.4
    
por рüффп 16.10.2018 / 14:55

3 respostas

3

A versão de tail nas versões do coreutils anteriores a 8.26 parece ter problemas para continuar um arquivo cuja pasta foi excluída. Você pode usar less :

less --follow-name +F data/log/servicemix.log
    
por 16.10.2018 / 15:18
1

Você adiciona a opção --retry a --follow=name . Ou use o atalho para esta combinação -F . Você verá um erro que perdeu o arquivo, mas ele encontrará o novo arquivo no novo diretório após a criação.

Verifique sua página de manual para obter informações completas.

    
por 16.10.2018 / 15:01
0

Note que, para uma versão específica da cauda, isso não é possível devido a um bug.

Quando o diretório for removido, a cauda do comando não poderá se conectar novamente ao arquivo. Eu era capaz de reproduzir isso antes em uma configuração mais antiga, mas tentando a resposta acima na minha versão atual, ele funciona. Então, se a resposta acima não funcionar para você, verifique a versão da cauda.

    
por 16.10.2018 / 15:07