tail
normalmente segue o descritor de arquivo ( --follow=descriptor
), que fica inacessível quando o arquivo de log é transferido ou o arquivo é movido. Veja isso na página do manual de tail
:
--retry
keep trying to open a file even when it is or becomes inaccessible; useful when following by name, i.e., with --follow=name
Portanto, use-o assim ( tail
segue o nome e não o descritor agora):
tail --follow=name --retry logfile | grep "pattern"
Você verá na saída de caudas, quando o arquivo for truncado ou removido:
$ tail --follow=name --retry logfile
[...]
tail: logfile: file truncated
[...]
tail: 'logfile' has become inaccessible: No such file or directory
tail: 'logfile' has appeared; following end of new file
[...]