Як мені отримати менше імені файлу, а не номер inode?


11

У мене є програмне забезпечення, яке повертає свої файли журналу, коли він перезапускається. Однак під час розробки я багато цього перезавантажую, тому я хотів би в будь-який час відстежувати останній файл журналу.

Якщо я починаю lessнормально з less program.logі натискаю Shift+ fдо хвоста, коли файл журналу повертається, я продовжую моніторинг старого файлу журналу. Я припускаю, що це тому, що число inode залишається однаковим і lessмає відкриту ручку файлу до цієї inode.

Чи можна відслідковувати останню активність у тому, що в даний час називається файл журналу 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 змінює поведінку менше.
Це робить командний ключ ShiftFвсередині " lessfollow" на основі імені файлу, а не дескриптора файлу.

Крім того, немає нормальної опції для запуску lessв наступному режимі.
Але ви можете використовувати командний рядок, щоб надати натискання клавіш після запуску, встановивши їх префіксом +.
Поєднання параметра модифікатора з +F, lessфактично, розпочнеться в (модифікованому) режимі слідування.

Використовуйте +Fокремо для еквіваленту звичайної tail -f:

less +F file.log

1

Щойно я знайшов відповідь в цьому запитанні U&L під назвою: Як зробити tail -fфайли, обернені журналом? .

Використання tail:

(якщо встановлення хвоста GNU у вашій системі є опцією)

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 років, для деяких програм. Не має сенсу. Цей сайт був неоціненним для збереження вашої поваги
slm

якщо ви хочете більше розуму, перегляньте pkgsrc.org :)
надішліть info

Це не буде добре працювати. Тому що lessбуде висіти, якщо ви зробите "G" pr "F". Що ви можете перервати, роблячи "Ctrl-C", але тоді це вбиває хвіст. Потім ви можете захистити хвіст до Ctrl-C, але він все ще не дуже корисний.
Стефан Шазелас

Що стосується хвоста GNU: ознайомтеся з цим, щоб дізнатися, які інструменти повинні бути доступні для будь-якого хоста Solaris. (Насправді хвіст GNU є за замовчуванням у Solaris 11). Систематичні системи Solaris часто ускладнюють своїх користувачів, тому що вони залишають інсталяцію на самій голій кінці, тоді як інструменти GNU для Solaris фактично ці дні доступні безпосередньо від Oracle або в деяких випадках - частина встановлення за замовчуванням. Немає причин не робити це частиною вашої установки. Немає підстав переходити до "неофіційних" репостів. Дивіться посилання.
unixhacker2010
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.