У меня есть часть программного обеспечения, которая вращается свои файлы журнала при перезапуске. Однако во время разработки я часто перезагружаю его, поэтому я хотел бы в любое время отслеживать последний файл журнала.
Если я less
обычно начинаю с less program.log
и нажимаю Shift+ fхвост, когда файл журнала поворачивается, я продолжаю следить за старым файлом журнала. Я предполагаю, что это потому, что номер инода остается неизменным и less
имеет дескриптор открытого файла для этого инода.
Можно ли отслеживать последние действия любого журнала, который в данный момент называется program.log
?
В частности, я работаю над Sun OS, поэтому решение, которое там работает, было бы идеальным.
tail -F program.log | less
будет работатьtail -f program.log
ты пробовал это?Ответы:
Используйте,
less --follow-name
если ваша версияless
поддерживает это. Эта опция была введена в версии 416.источник
less
Вариант--follow-name
является лишь частью решения;Для замены
tail -F
нужен еще один аргумент:Одна только опция вроде
less --follow-name file.log
не запускается после обновления файла. Вы должны войти в следующий режим, нажав ShiftF.(Выйдите из режима навигации ControlC.)
Вместо того, чтобы следовать за файлом,
--follow-name
изменяет поведение less.Это делает командную клавишу ShiftFвнутри
less
follow на основе имени файла, а не дескриптора файла.Кроме того, нет нормального варианта запуска
less
в режиме слежения.Но вы можете использовать командную строку, чтобы назначать нажатия клавиш после запуска, добавляя к ним префикс
+
.Объединение опции модификатора с
+F
,less
фактически запустится в (измененном) режиме следования.Используйте
+F
отдельно для эквивалента равниныtail -f
:источник
Я только что нашел ответ в этом разделе вопросов и ответов под названием « Как сделать
tail -f
файлы, повернутые в журнал? ,Использование
tail
:(если установка GNU tail в вашей системе является опцией)
Из справочной страницы хвоста :
Ключ
--retry
выключатель. Это говоритtail
команде продолжать попытки следовать за файлом по имени.-F
Переключатель делает как на-f
и--retry
.С помощью
less
Как отметил @StephaneChazela в комментариях, следующее не будет работать.
Единственный другой вариант, который у вас есть, - это использовать меньше напрямую, предполагая, что он поддерживает
--follow-name
переключатель иless
файл напрямую,tail
полностью отказавшись от использования .источник
less
будет висеть, если вы делаете "G", пр "F". Что вы можете прервать, нажав «Ctrl-C», но тогда это убьет хвост. После этого вы можете сохранить иммунитет к Ctrl-C, но он все еще не очень полезен.