tail -F
já deve fazer isso.
Crie um /tmp/t/file
vazio. Em seguida, no terminal 1, inicie tail -F
e deixe-o em execução:
anthony@Zia:~$ tail -F /tmp/t/file
a
b
tail: '/tmp/t/file' has become inaccessible: No such file or directory
tail: '/tmp/t/file' has appeared; following end of new file
c
d
No terminal 2, eu fiz:
anthony@Zia:/tmp/t$ echo a >> file
anthony@Zia:/tmp/t$ echo b >> file
anthony@Zia:/tmp/t$ mv -i file file.old; echo c >> file
anthony@Zia:/tmp/t$ echo d >> file
Como você pode ver, tail -F
realmente segue o nome, não o inode. Talvez você esteja usando um tail
que dê um significado diferente a -F
(esse sinalizador é uma extensão BSD, copiada posteriormente pelo GNU também), ou sua versão tem bugs? Você também pode tentar tail --follow=name --retry
(sintaxe alternativa de cauda GNU) ou xtail
(que coroa um diretório inteiro).