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


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.