Як слідкувати лише за останніми n рядками файлу журналу?


110

У мене зростає файл журналу, для якого я хочу відображати лише останні 15 рядків. Ось що я знаю, що можу зробити:

tail -n 15 -F mylogfile.txt

Коли файл журналу заповнюється, tailдодає до дисплея останні рядки.

Я шукаю рішення, яке відображатиме лише останні 15 рядків і позбавляється від рядків до останніх 15 після його оновлення. Ви мали б ідею?


28
Змініть розмір вікна вашого терміналу до 15 рядків.
Джонатан

1
Це теж добре.
Марк-Олів'є Тіто

3
@ Джонатан геній!
Марселл Уоллес

Не вдалося оскаржити коментар Джонатана, або він втрачає смак 15 оновлених заявок
jdero

Відповіді:


151

Можливо, достатньо використовувати годинник:

$ дивіться хвіст -n 15 mylogfile.txt

1
Чудово! Дуже дякую. Я також вивчаю команду "спостерігати" в процесі.
Марк-Олів'є Тіто

1
Пам’ятайте, що це рішення не працює, якщо між двома watchоновленнями файл перевищує 15 рядків . Ви можете використовувати -nдля зміни цього інтервалу.
bfontaine

25

Якщо ви використовуєте годинник, спробуйте -nпараметр контролю інтервалу між кожним оновленням.

Таким чином, наступні дзвонять у хвіст кожні 2 секунди

$ watch -n 2 tail -n 15 mylogfile.txt

а цей опитує його кожні 1 секунду

$ watch -n 1 tail -n 15 mylogfile.txt

13

Ви можете потоково подати файл журналу менше, натискаючи SHIFT + F, який передасть файл, використовуючи менше. $ less mylogfile.txt Потім просто натисніть клавішу SHIFT + F, і вона потіче. Я думаю, що це зручно для моніторингу файлів журналів, які оновлюються.


1
Це дуже приємно!
кайзер

8

Можливо, вам здається -dпарам зручним.

man watch

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


1
Гарний улов теж!
Марк-Олів'є Тіто

0

У Solaris, AIX або HPUX або UNIX-подібних (включаючи Linux) ви можете використовувати скрипти для моніторингу журналів або чогось подібного:

while true; 
    clear; 
    do date; 
    echo ;
    echo "MONITORING LOG IN "/path/to/file.log": "; 
    echo "Obs.: Last 20 lines of a logfile:
    echo ;
    tail -20 /path/to/file.log;
    echo ;
sleep 5; 
done
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.