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
-Fsame as--follow=name --retry