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

106

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

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

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

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

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

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

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

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

maxschlepzig
источник
2
Связанный: unix.stackexchange.com/questions/196168/…
Фолькер Сигел

Ответы:

162

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

tail -F /var/log/kern.log

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

andcoz
источник
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