Você precisa de tail --follow=name /var/log/syslog
O motivo é que, por padrão, supostamente por motivo de desempenho, tail
abre o arquivo especificado e, em seguida, observa o descritor de arquivo que ele obtém
a partir dessa open(2)
solicite alterações.
Isso funciona bem enquanto o arquivo for alterado - anexado ou até mesmo reescrito (truncando-o primeiro), mas ele pára de funcionar se o arquivo for substituído - isto é, removido e criado com o mesmo nome, e é isso que o logrotate
normalmente faz.
O modo "nome" de --follow
faz com que tail
use um stat(2)
syscall mais caro que realmente "resolve" o nome do arquivo toda vez pela camada do sistema de arquivos, e se tail
o alterar -chamado "inode" , tail
reabre o arquivo.
A saída de man tail
:
-f, --follow[={name|descriptor}]
output appended data as the file grows; an absent option argument means 'descriptor'
Você também pode ver a opção de linha de comando -F
, que é definida como
-F
same as--follow=name --retry