Фото Григорьева Ивана

👋 Добро пожаловать! Меня зовут Григорьев Иван, я backend-разработчик. Пишу на PHP, Python. В данный момент живу в городе Кемерово.

💼 Работаю консультантом по разработке ПО в Кузбасс-ЦОТ

Сайт использует HUGO и Bootstrap. Хостинг Firebase.
Icon made by Freepik perfect from www.flaticon.com.

Просмотр логов в реальном времени на Linux

image from Просмотр логов в реальном времени на Linux

Некоторые приложения сохраняют информацию о своем состоянии или исторические данные процесса выполнения в лог-файлах. Возникает необходимость просмотреть изменениия лог файла или файлов в реальном времени. Это могут быть запросы к веб-серверу NGINX или результат работы утилиты curl при скачивании большого количества данных.

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

Утилита tail

Утилита которую я использую для просмотра логов в реальном времени, довольно популярна, но новички в Linux могут о ней не знать. Это утилита tail. Переводится название с английского как хвост, что полностью отражает суть утилиты.

По умолчанию, tail просто выводит 10 последних строк файла:

tail /var/log/nginx/access.log

Результат:

5.101.0.209 - - [17/Apr/2020:11:24:48 +0000] "GET /solr/admin/info/system?wt=json HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
5.101.0.209 - - [17/Apr/2020:11:30:02 +0000] "GET /?a=fetch&content=<php>die(@md5(HelloThinkCMF))</php> HTTP/1.1" 200 396 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
5.101.0.209 - - [17/Apr/2020:11:30:03 +0000] "GET /?XDEBUG_SESSION_START=phpstorm HTTP/1.1" 200 396 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
5.101.0.209 - - [17/Apr/2020:11:36:26 +0000] "GET /index.php?s=/Index/\x5Cthink\x5Capp/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=HelloThinkPHP HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
192.241.239.88 - - [17/Apr/2020:11:54:02 +0000] "GET /hudson HTTP/1.1" 404 152 "-" "Mozilla/5.0 zgrab/0.x"
...

В результате примера, кстати, видно что веб-сервер сканируют боты поиска уязвимостей. Такие боты в автоматическом режиме сканируют сервера в сети интернет, находят сервера с уязвимым ПО (это может быть система управления сайтом или панель управления сервером) и эксплуатируют уязвимость. Потом такой сервер становится частью ботнета или же с него выполняются незаконные действия. Так что мой совет: не используйте никогда устаревшее ПО, следите за регулярными обновлениями.

Параметры утилиты tail

Изменить количество выводимых строк можно параметром -n или просто указав количество числовым параметром, например -2:

tail -2 /var/log/nginx/access.log

В результате отобразится две последних строки лог-файла.

А вот для отслеживания изменений необходим параметр -f:

tail -f /var/log/nginx/access.log

Можно также комбинировать команды, например выводить только две последних строки файла при изменении лог-файла:

tail -f -2 /var/log/nginx/access.log

Что бы остановить выполнение утилиты и выйти из просмотра файла, нажмите Ctrl + C.

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

Поделиться:

comments powered by Disqus