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