Альтернатива для "tail -f", который следует за именем файла
5215
Hugh
У меня есть несколько журналов, генерируемых с использованием временного вращающегося файлового регистратора. Это записывает в файл с именем tool.log, и в полночь, перемещает это в tool.log.<date>и запускает новый tool.log.
У меня tail -f tool.logработает машина, которая следит за журналами, но в полночь, когда tool.logпереименовывается tool.log.<date>, tailпродолжает смотреть переименованный файл.
Я надеюсь, что инструмент похож на него tail, но будет продолжать следить за именем файла tool.log, а не следовать за индексом.
Существует ли что-то подобное? Если нет, я могу написать свой собственный на Python для этой цели.
Busybox --Fдоступен в последних версиях, но должен быть скомпилированENABLE_FEATURE_FANCY_TAIL(по умолчанию он не скомпилирован)
55
Oleg Bolden
Альтернативой является tail -Fкоманда.
-FОпция подразумевает --follow=nameс --retryопцией, так что хвост смотрит ваш файл, даже если он был удален и создан заново.
4
Arronical
Другой альтернативой будет использование watchкоманды, которая будет повторять любую команду каждые n секунд, каждые 2 секунды в этом примере:
watch -n2 "tail tool.log"
Используйте Ctrl+, Cчтобы выйти из команды, когда вы закончите просмотр журнала.
Похоже, что это создаст много дубликатов сообщений, если журнал прокручивается медленнее, чем таймер обновления, и пропустит некоторые сообщения, если прокрутится быстрее.
Bobson 8 лет назад
1
Часы занимают весь экран, поэтому они не дублируют сообщения, но лишают возможности прокручивать назад.
Hugh 8 лет назад
3
3
Wayne Werner
lnav - это еще один фантастический инструмент, который следует за именем файла.
Вы также можете указать его на каталог, и он будет привязывать все файлы в этом каталоге, в дополнение ко всем другим полезным функциям.
Я обнаружил, что он не обрабатывает усеченные и / или переименованные повернутые журналы (я не уверен, что расстраивает его в моем конкретном случае), поэтому журналы, по-видимому, останавливаются в полночь, пока я не перезапущу lnav. Мне не хватает какого-то очевидного переключателя или техники для этого, мне интересно, так как это кажется чем-то, что нужно принять в своем шаге?
Stuart Hickinbottom 7 лет назад
0
Это зависит от того, как файл обрезается. Если вы передадите флаг `-r` в lnav, он перезагрузит имя файла (и загрузит все ранее свернутые логи)
Wayne Werner 7 лет назад
0
3
VL-80
Since you have asked for alternative:
The less utility could be an alternative for tail -F.
It will have to be run as follows: less --follow-name filename.log and press Shift + F.
This will give you same results as tail -F.
Благодарю. Я был только после альтернативы, потому что я не знал о хвосте -F. Всегда приятно знать варианты, хотя.
Hugh 8 лет назад
0
1
Andy Lester
Я не уверен, что multitailсправится с вашим конкретным случаем, но держу пари, что так и будет. multitail делает практически все, что вы могли tailбы сделать.
Да будет - `multitail -f -f -f ... `. Этот пример показывает следующие несколько файлов одновременно, которые будут показаны в отдельных окнах.
Stuart Hickinbottom 7 лет назад
1