Как мне уменьшить имя файла, а не номер инода?


11

У меня есть часть программного обеспечения, которая вращается свои файлы журнала при перезапуске. Однако во время разработки я часто перезагружаю его, поэтому я хотел бы в любое время отслеживать последний файл журнала.

Если я lessобычно начинаю с less program.logи нажимаю Shift+ fхвост, когда файл журнала поворачивается, я продолжаю следить за старым файлом журнала. Я предполагаю, что это потому, что номер инода остается неизменным и lessимеет дескриптор открытого файла для этого инода.

Можно ли отслеживать последние действия любого журнала, который в данный момент называется program.log?

В частности, я работаю над Sun OS, поэтому решение, которое там работает, было бы идеальным.


возможно tail -F program.log | lessбудет работать
— sendmoreinfo

tail -f program.log ты пробовал это?
— Рахул Патил

Ответы:


17

Используйте, less --follow-nameесли ваша версия lessподдерживает это. Эта опция была введена в версии 416.


Отличный ответ. Как Solaris 10, так и Solaris 11 используют меньше версии 436, поэтому эта опция действительно доступна.
— unixhacker2010

5

lessВариант --follow-nameявляется лишь частью решения;
Для замены tail -Fнужен еще один аргумент:

less --follow-name +F file.log

Одна только опция вроде less --follow-name file.logне запускается после обновления файла. Вы должны войти в следующий режим, нажав ShiftF.
(Выйдите из режима навигации ControlC.)

Вместо того, чтобы следовать за файлом, --follow-name изменяет поведение less.
Это делает командную клавишу ShiftFвнутри lessfollow на основе имени файла, а не дескриптора файла.

Кроме того, нет нормального варианта запуска lessв режиме слежения.
Но вы можете использовать командную строку, чтобы назначать нажатия клавиш после запуска, добавляя к ним префикс +.
Объединение опции модификатора с +F, lessфактически запустится в (измененном) режиме следования.

Используйте +Fотдельно для эквивалента равнины tail -f:

less +F file.log

1

Я только что нашел ответ в этом разделе вопросов и ответов под названием « Как сделать tail -fфайлы, повернутые в журнал? ,

Использование tail:

(если установка GNU tail в вашей системе является опцией)

tail -F program.log

Из справочной страницы хвоста :

   -f,      --follow[={name|descriptor}]
            output appended data as the file grows; -f, 
            --follow, and --follow=descriptor are equivalent

   -F       same as --follow=name --retry

   --retry  keep  trying  to  open  a  file even when it is or becomes
            inaccessible; useful when following by name, i.e., with
            --follow=name

Ключ --retryвыключатель. Это говорит tailкоманде продолжать попытки следовать за файлом по имени. -FПереключатель делает как на -fи --retry.

С помощью less

Как отметил @StephaneChazela в комментариях, следующее не будет работать.

tail -F program.log | less

Единственный другой вариант, который у вас есть, - это использовать меньше напрямую, предполагая, что он поддерживает --follow-nameпереключатель и lessфайл напрямую, tailполностью отказавшись от использования .

less --follow-name program.log

Мне иногда очень не нравится Sun OS ...
— Алекс Чемберлен

Я согласен, я работал годами, это сводит вас с ума, что инструментам 10 лет для некоторых приложений. Без разницы. Этот сайт был бесценным для поддержания вашего здравомыслия на Solaris: sunfreeware.com/introduction.html
— ОДС

если вы хотите больше здравомыслия, проверьте pkgsrc.org :)
— sendmoreinfo

Это не сработает. Потому что lessбудет висеть, если вы делаете "G", пр "F". Что вы можете прервать, нажав «Ctrl-C», но тогда это убьет хвост. После этого вы можете сохранить иммунитет к Ctrl-C, но он все еще не очень полезен.
— Стефан Шазелас

Что касается хвоста GNU: проверьте это для получения информации о том, какие инструменты должны быть доступны на любом хосте Solaris. (На самом деле GNU tail существует по умолчанию в Solaris 11). Системные администраторы Solaris часто усложняют работу для своих пользователей, потому что они оставляют установку на самой простой установке, в то время как инструменты GNU для Solaris в настоящее время фактически доступны непосредственно из Oracle или в некоторых случаях являются частью установки по умолчанию. Нет причин не делать это частью вашей установки. Нет причин ходить на «неофициальные» репо. Смотрите ссылку.
— unixhacker2010
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.