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