Тебе нужно tail --follow=name /var/log/syslog
Причина в том, что по умолчанию - предположительно из соображений производительности - tail
открывается указанный файл и затем просматривает дескриптор файла, который он получает из этого open(2)
вызова, на предмет изменений. Это работает нормально до тех пор, пока файл изменяется - добавляется или даже переписывается (сначала обрезая его), но перестает работать, если файл заменяется - то есть удаляется и создается с тем же именем, что logrotate
обычно и происходит.
Режим «имя» --follow
брендов tail
использовать более дорогостоящий stat(2)
системный вызов, который на самом деле «решает» имя файла каждый раз, когда с помощью файловой системы слоя, и если tail
замечает изменения в файле, его так называемый «индексный дескриптор», tail
повторно открывает файл.
Выход из man tail
:
-f, --follow[=]
выводить добавленные данные по мере роста файла; аргумент отсутствия опции означает «дескриптор»
Вы также можете посмотреть на параметр -F
командной строки, который определяется как
-F
такой же как--follow=name --retry