X

Просмотр логов в Linux – tail и less

Если вы взялись за администрирование Linux, будьте готовы к тому, что просмотр и анализ лог-файлов будет отнимать львиную долю времени того времени, что вы проводите в консоли. Анализ лога основной (а чаще всего и единственный) способ разобраться в поведении сервера.

Зачастую, лог содержит тысячи строк, так мало того, может каждую секунду увеличиваться на еще несколько записей. А смотреть желательно в живую, отслеживая реакцию на те или иные действия. Тут нам помогут две утилиты tail и less.

Просмотр логов в Linux с помощью tail.

tail (переводится как хвост) позволяет просмотреть 10 последних строк файла. Если нужно больше, достаточно об этом сказать. Например, 25:

[hc@host ~]#  tail -n 25 /var/log/httpd/error_log

А можно просто:

[hc@host ~]#  tail -25 /var/log/httpd/error_log

Второй полезный параметр, который можно передать -f. C этим параметром tail выводит заданное количество последних строк и продолжает считывать добавляемые строки, до тех пор пока вы не нажмете Сtrl+C – т.е. вы можете в живую отслеживать изменения в лог-файле:

[hc@host ~]# tail -5f /home/sites/web/site.ru/logs/site.ru.log
178.45.0.0 - - [23/Jan/2016:19:45:02 +0300] "GET / HTTP/1.0" 200 17401 "http://site.ru/allsorts/" "Mozilla/5.0 (iPad; CPU OS 8_0_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A405 Safari/600.1.4"
217.118.0.0 - - [23/Jan/2016:19:46:34 +0300] "GET /allsorts HTTP/1.0" 301 - "http://site.ru/" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13C75 Safari/601.1"
217.118.0.0 - - [23/Jan/2016:19:46:35 +0300] "GET /allsorts/ HTTP/1.0" 200 16663 "http://site.ru/" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13C75 Safari/601.1"
85.95.0.0 - - [23/Jan/2016:19:47:31 +0300] "GET / HTTP/1.0" 200 17401 "http://vk.com/away.php" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36 OPR/34.0.2036.50"
85.95.0.0 - - [23/Jan/2016:19:47:34 +0300] "GET /allsorts/ HTTP/1.0" 200 16663 "http://site.ru/" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36 OPR/34.0.2036.50"

Но самое большое удобство tail в том, что в качестве параметров может быть передано несколько файлов, т.е. вы можете отслеживать несколько связанных лог-файлов одновременно:

[hc@host ~]# tail -f -n 5 -s 3 /home/sites/web/site.ru/logs/site.ru.log /var/log/httpd/domains/site.ru.error.log
==> /home/sites/web/site.ru/logs/site.ru.log <==
37.113.0.0 - - [23/Jan/2016:19:55:45 +0300] "GET /wp-content/themes/bigroll/img/delivery-feature-6.png HTTP/1.1" 200 18165 "http://site.ru/delivery/" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13C75 Safari/601.1"
37.113.0.0 - - [23/Jan/2016:19:55:46 +0300] "GET /wp-content/themes/bigroll/img/delivery-truck.png HTTP/1.1" 200 15243 "http://site.ru/delivery/" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13C75 Safari/601.1"
37.113.0.0 - - [23/Jan/2016:19:55:46 +0300] "GET /wp-content/themes/bigroll/img/scooter-icon-small.png HTTP/1.1" 200 4322 "http://site.ru/delivery/" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13C75 Safari/601.1"
37.113.0.0 - - [23/Jan/2016:19:55:46 +0300] "GET /wp-content/themes/bigroll/img/link-button-shadow.png HTTP/1.1" 200 7792 "http://site.ru/delivery/" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13C75 Safari/601.1"
37.113.0.0 - - [23/Jan/2016:19:55:46 +0300] "GET /wp-content/themes/bigroll/img/header-bg.png HTTP/1.1" 200 194475 "http://site.ru/delivery/" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13C75 Safari/601.1"

==> /var/log/httpd/domains/site.ru.error.log <==
[Wed Jan 20 04:38:36 2016] [error] [client 46.166.0.0] client denied by server configuration: /home/sites/web/site.ru/public_html/xmlrpc.php
[Wed Jan 20 04:38:36 2016] [error] [client 46.166.0.0] client denied by server configuration: /home/sites/web/site.ru/public_html/xmlrpc.php
[Wed Jan 20 13:15:43 2016] [error] [client 69.84.0.0] client denied by server configuration: /home/sites/web/site.ru/public_html/xmlrpc.php
[Wed Jan 20 20:48:58 2016] [error] [client 185.112.0.0] client denied by server configuration: /home/sites/web/site.ru/public_html/xmlrpc.php
[Wed Jan 20 22:42:02 2016] [error] [client 5.255.0.0] client denied by server configuration: /home/sites/web/site.ru/public_html/xmlrpc.php

Обратите внимание, я использовал конструкцию-s 3 – с помощью данного ключа задается интервал обновления в секундах, т.е. в данном случае перечитываться файлы будут раз в 3 секунды.

Просмотр логов в Linux с помощью less.

При всей простоте и удобстве tail обладает одним существенным недостатком – он показывает только последние строки и вы не имеете возможности поглядеть, что происходило до этих записей или в определенный момент времени. Для таких ситуаций лучше подходит утилита less.

Откроем файл:

[hc@host ~]# less /var/log/httpd/domains/big-roll.ru.error.log

Как видите мы можем спокойно листать содержимое файла с помощью стрелок курсора и клавиш PgUp и PgDn.
Запомните еще несколько полезных клавиш:
q – выход;
g – перейти в начало файла;
G – перейти в конец файла;
Ng – перейти на строку N (например, на 14 строку 14g);
N% – перейти на позицию N% (например, 35%);
F – перейти в режим отслеживания обновления файла, т.е. аналог tail -f;
/pattern – прямой (вниз по файлу) поиск по образцу pattern;
?pattern – обратный (вверх по файлу);
n – следующее совпадение образца поиска;
N – предыдущее совпадение;
Выход из режима отслеживания Ctrl+C;
Полный список всех остальных клавиш и режимов вы можете поглядеть самостоятельно – нажав h – помощь (очень советую нажать).

Теперь давайте посмотрим какие ключи можно передать less.

+F – cразу запустить less в режиме считывания хвоста:

[hc@host ~]# less +F /var/log/httpd/domains/big-roll.ru.error.log

-I ? игнорировать регистр при поиске;
-N ? отображать номера строк;
-S ? усекать длинные строки;

Давайте подытожим – для просмотра логов в Linux удобно пользоваться утилитами tail и less. Первая отлично подходит для быстрого просмотра концовок лог-файлов или для отслеживания изменений сразу в нескольких файлах. Вторая более функциональна и лучше приспособлена для вдумчивого анализа.

Categories: Ликбез
hc:

View Comments (1)

  • {Здравствуйте!|Добрый день.|Добрый день!} Это *Имя*. Это ссылка про которую я говорил *ссылка*