Как сделать `tail -f` файлов, повернутых в журнал?


106

В долго работающей системе у меня обычно есть терминал с

$ tail -f /var/log/kern.log

или что-то вроде этого открытого.

Но время от времени мне приходится перезапускать такую ​​команду, потому что новые сообщения больше не отображаются.

Я предполагаю, что это из-за работы по ротации журналов, которая заменила файл журнала tail -f«Наблюдение».

Как я могу избежать этой проблемы перезапуска?

Могу ли я вызвать так tail, чтобы он замечал процесс вращения и делал правильные вещи?

(Я замечаю эту проблему в системе Ubuntu 11.04, которая использует rsyslogdпо умолчанию.)


Ответы:


162

-FВместо этого используйте опцию:

tail -F /var/log/kern.log

-FОпция указывает , tailчтобы отслеживать изменения в файл по имени файла, вместо того , чтобы использовать номер индексного дескриптора , который изменяется во время вращения. Он также будет пытаться открыть файл, если его нет.


7
Круто, да, я. (только для записи, это опция хвоста GNU - где хвост GNU, конечно, по умолчанию в Ubuntu).
maxschlepzig

Вы правы: - / Я не заметил, что Ubuntu в вашем вопросе был лишь примером.
andcoz

не проблема - я просто прокомментировал для полноты (иногда я просто хочу посмотреть, что такое POSIX, а что нет). Вопрос был действительно в значительной степени об Ubuntu.
maxschlepzig

1
Есть tail -F /var/log/kern.logэквивалент tail -f --follow=name --retry /var/log/kern.log?
Basj

1
@Basj - согласно man7.org/linux/man-pages/man1/tail.1.html это эквивалентно
andrej
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.