- View log online linux
- Пишу о:
- Просмотр логов в реальном времени на Linux
- Утилита tail
- Параметры утилиты tail
- Отслеживание логов Linux в реальном времени
- Мониторинг лог-файлов командой tail
- Команда tailf
- tail -F. Если файл был переименован или удален
- Отслеживание нескольких лог-файлов одновременно
- Утилита multitail
- 4 Ways to Watch or Monitor Log Files in Real Time
- 1. tail Command – Monitor Logs in Real Time
- 2. Multitail Command – Monitor Multiple Log Files in Real Time
- 3. lnav Command – Monitor Multiple Log Files in Real Time
- 4. less Command – Display Real Time Output of Log Files
- A «live» view of a logfile on Linux
View log online linux
Добро пожаловать! Меня зовут Григорьев Иван, я Full Stack Developer. В основном пишу на PHP (Nette, Laravel), Python (Django, DRF), Vue (Quasar Framework). Опыт профессиональной разработки более 10 лет.
Работаю в компании MACRO разработчиком. В свободное время оказываю консультации по разработке ПО.
Пишу о:
Просмотр логов в реальном времени на 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=die(@md5(HelloThinkCMF)) 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 .
Рад был поделиться информацией с вами, а вы в свою очередь делитесь моей заметкой в социальных сетях и отправляйте друзьям и коллегам.
Отслеживание логов Linux в реальном времени
При просмотре лог-файлов (файлов журналов) в Linux иногда бывает нужно мониторить новые записи в логах в реальном времени. То есть вы указываете, какой лог-файл (или файлы) вы хотите просматривать и в реальном времени отслеживаете новые записи в этом файле.
Мониторинг лог-файлов командой tail
Если выполнить команду tail ИмяФайла без каких-либо дополнительных аргументов, то будет выведено 10 последних строк файла, и команда завершит свою работу.
Для того, чтобы команда tail непрерывно выводила последние записи в файле, то есть, если в файле появились новые записи, то информация на экране обновлялась, используется опция -f :
tail -f ИмяЛогФайла
Выполним команду tail -f для вывода лог-файла /var/log/syslog
Так как используется опция -f , команда tail не завершает свою работу, а ожидает появления в лог-файле новых записей. Как только в лог-файл будут добавлены новые записи, они сразу же будут отображены в терминале.
Чтобы прервать выполнение команды, нажмите сочетание клавиш Ctrl+C
Команда tailf
Аналогом команды tail -f является команда tailf
Важным отличием команды tailf от tail -f является то, что tailf не обращается к файлу, когда он не изменяется. В следствии этого время доступа к файлу не обновляется и система не выполняет постоянный сброс файла на диск, когда файл не обновляется.
В описании команды tailf указывается на то, что ее удобно использовать для мониторинга файлов журналов на ноутбуках. Так как без надобности не происходит обращение к диску и сохраняется срок службы батареи.
tail -F. Если файл был переименован или удален
Обычно в Linux лог-файлы записываются не до бесконечности, иначе такой файл было бы очень неудобно в дальнейшем использовать. Вместо этого применяется так называемая ротация файлов. Когда лог-файл становится большим, то он либо удаляется, либо переименовывается (создается резервная копия файла), а дальнейшие сообщения начинают записываться в новый, пустой файл.
У команды tail есть две опции: -f и -F
- Если используется опция -f и происходит переименование, отслеживаемого файла, то команда tail продолжает отслеживать уже переименованный файл. Команда tail в данном случае привязывается к идентификатору (inode) файла.
- Если используется опция -F и происходит переименование, отслеживаемого файла, то команда tail определит это, и как только будет создан новый лог-файл (с тем именем, которое мы указали команде tail), команда tail начнет отслеживать этот новый файл.
Будем отслеживать лог-файл /var/log/apache2/error.log . Выполняем команду tail с опцией -F
tail -F /var/log/apache2/error.log
Если система переместит (переименует) файл error.log в файл error.log.1 и создаст новый файл error.log , то наша команда tail продолжит отслеживать уже новый файл error.log
Если бы мы в этом примере использовали опцию -f , то команда tail продолжила бы отслеживать файл error.log.1 , который для нас уже неактуален при просмотре логов в реальном времени.
Отслеживание нескольких лог-файлов одновременно
Команда tail поддерживает отслеживание нескольких файлов одновременно. Для этого необходимо указать имена файлов через пробел.
tail -f /var/log/apache2/error.log /var/log/apache2/access.log
Как только какой-либо из файлов меняется, на экран выводится имя этого файла и новые записи в нем.
Утилита multitail
Для одновременного отслеживания нескольких лог-файлов существует очень удобная утилита multitail
Она не просто выводит данные, а создает для каждого файла свое окно (область) и выводит данные в этом окне. С ее помощью очень удобно отслеживать сразу множество лог файлов и видеть их в одном окне терминала.
Утилиту multitail можно установить из штатных репозиториев вашего дистрибутива. Для установки выполните команду (выберите соответствующую команду для вашего дистрибутива):
sudo apt install multitail sudo yum install multitail sudo dnf install multitail
multitail /var/log/apache2/access.log /var/log/apache2/error.log
Для выхода из утилиты нажмите клавишу q
4 Ways to Watch or Monitor Log Files in Real Time
How can I see the content of a log file in real time in Linux? Well there are a lot of utilities out there that can help a user to output the content of a file while the file is changing or continuously updating. Some of the most known and heavily used utility to display a file content in real time in Linux is the tail command (manage files effectively).
1. tail Command – Monitor Logs in Real Time
As said, tail command is the most common solution to display a log file in real time. However, the command to display the file has two versions, as illustrated in the below examples.
In the first example the command tail needs the -f argument to follow the content of a file.
$ sudo tail -f /var/log/apache2/access.log
The second version of the command is actually a command itself: tailf. You won’t need to use the -f switch because the command is built-in with the -f argument.
$ sudo tailf /var/log/apache2/access.log
Usually, the log files are rotated frequently on a Linux server by the logrotate utility. To watch log files that get rotated on a daily base you can use the -F flag to tail command.
The tail -F will keep track if new log file being created and will start following the new file instead of the old file.
$ sudo tail -F /var/log/apache2/access.log
However, by default, tail command will display the last 10 lines of a file. For instance, if you want to watch in real time only the last two lines of the log file, use the -n file combined with the -f flag, as shown in the below example.
$ sudo tail -n2 -f /var/log/apache2/access.log
2. Multitail Command – Monitor Multiple Log Files in Real Time
Another interesting command to display log files in real time is multitail command. The name of the command implies that multitail utility can monitor and keep track of multiple files in real time. Multitail also lets you navigate back and forth in the monitored file.
To install mulitail utility in Debian and RedHat based systems issue the below command.
$ sudo apt install multitail [On Debian & Ubuntu] $ sudo yum install multitail [On RedHat & CentOS] $ sudo dnf install multitail [On Fedora 22+ version]
To display the output of two log file simultaneous, execute the command as shown in the below example.
$ sudo multitail /var/log/apache2/access.log /var/log/apache2/error.log
3. lnav Command – Monitor Multiple Log Files in Real Time
Another interesting command, similar to multitail command is the lnav command. Lnav utility can also watch and follow multiple files and display their content in real time.
To install lnav utility in Debian and RedHat based Linux distributions by issuing the below command.
$ sudo apt install lnav [On Debian & Ubuntu] $ sudo yum install lnav [On RedHat & CentOS] $ sudo dnf install lnav [On Fedora 22+ version]
Watch the content of two log files simultaneously by issuing the command as shown in the below example.
$ sudo lnav /var/log/apache2/access.log /var/log/apache2/error.log
4. less Command – Display Real Time Output of Log Files
Finally, you can display the live output of a file with less command if you type Shift+F .
As with tail utility, pressing Shift+F in a opened file in less will start following the end of the file. Alternatively, you can also start less with less +F flag to enter to live watching of the file.
$ sudo less +F /var/log/apache2/access.log
That’s It! You may read these following articles on Log monitoring and management.
In this article, we showed how to watch data being appended in log files in real-time on the terminal in Linux. You can ask any questions or share your thoughts concerning this guide via the comment form below.
A «live» view of a logfile on Linux
Lowell Heddings
Lowell Heddings
Founder and CEO
Lowell is the founder and CEO of How-To Geek. He’s been running the show since creating the site back in 2006. Over the last decade, Lowell has personally written more than 1000 articles which have been viewed by over 250 million people. Prior to starting How-To Geek, Lowell spent 15 years working in IT doing consulting, cybersecurity, database management, and programming work. Read more.
This approach works for any linux operating system, including Ubuntu, and is probably most often used in conjunction with web development work.
This will give you a scrolling view of the logfile. As new lines are added to the end, they will show up in your console screen.
For Ruby on Rails, for instance, you can view the development logfile by running the command from your project directory:
Lowell Heddings
Lowell is the founder and CEO of How-To Geek. He’s been running the show since creating the site back in 2006. Over the last decade, Lowell has personally written more than 1000 articles which have been viewed by over 250 million people. Prior to starting How-To Geek, Lowell spent 15 years working in IT doing consulting, cybersecurity, database management, and programming work.
Read Full Bio »