- Команда Linux tail
- Синтаксис
- Опции
- Примеры использования в Linux команды tail
- Вывод последних 10 строк файла
- Вывод последних N строк файла
- Отслеживание появления новых строк
- Отслеживание строк в нескольких файлах одновременно
- Вывод N последних байт вместо N последних строк
- Вывод отфильтрованных строк
- Итоги
- Просмотр содержимого файлов в командной строке Linux
- Команда cat
- Команда nl
- Команда less
- Команда more
- Команда head
- Команда tail
- Заключение
Команда Linux tail
Зачем нужна команда tail в Linux? Она позволяет вывести на экран конец файла. Это необходимо для просмотра новых данных, например в содержимом лог-файла.
Синтаксис
Печать последних 10 строк каждого из ФАЙЛОВ на стандартный вывод. Если задано несколько ФАЙЛОВ, сначала печатается заголовок с именем файла. Если ФАЙЛ не задан или задан как — , читает стандартный ввод.
Опции
-c, —bytes=[+]N Показать последние N байт; или укажите -c +N , чтобы начать вывод каждого файла с N-го байта -f, —follow[=
После K может стоять один из умножающий суффиксов: b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024, GB 1000*1000*1000, G 1024*1024*1024 и так далее для T, P, E, Z, Y. Также можно использовать двоичные префиксы: KiB=K, MiB=M и так далее.
С параметром —follow ( -f ), tail по умолчанию следует за дескриптором файла, что означает, что даже если файл переименован, tail будет и далее следить за его концом. Это поведение, принимаемое по умолчанию, нежелательно, если вы на самом деле хотите следить за именем файла, а не за дескриптором (например, при ротации файлов системных журналов). В таком случае используйте —follow=name . Это заставит tail следовать за указанным файлом, повторно открывая его периодически, чтобы узнать, не был ли он удален и заново создан какой-то другой программой.
Примеры использования в Linux команды tail
Вывод последних 10 строк файла
Команда запускается без опций:
oleg@mobile:~:$ tail /var/log/Xorg.0.log [ 16034.180] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/0003:04D9:1203.0004/input/input16/event3" [ 16034.180] (II) XINPUT: Adding extended input device "HID 04d9:1203" (type: KEYBOARD, id 12) [ 16034.180] (**) Option "xkb_model" "pc105" [ 16034.180] (**) Option "xkb_layout" "us,ru" [ 16034.180] (**) Option "xkb_variant" " " [ 16034.180] (**) Option "xkb_options" "grp:caps_toggle,grp_led:scroll,compose:ralt" [ 16034.186] (II) event3 - HID 04d9:1203: is tagged by udev as: Keyboard [ 16034.186] (II) event3 - HID 04d9:1203: device is a keyboard [ 17059.525] (EE) event3 - HID 04d9:1203: client bug: event processing lagging behind by 35ms, your system is too slow [ 17172.109] (EE) event3 - HID 04d9:1203: client bug: event processing lagging behind by 22ms, your system is too slow
Вывод последних N строк файла
oleg@mobile:~:$ tail -n 15 /var/log/Xorg.0.log [ 16034.154] (**) HID 04d9:1203: always reports core events [ 16034.154] (**) Option "Device" "/dev/input/event3" [ 16034.156] (II) event3 - HID 04d9:1203: is tagged by udev as: Keyboard [ 16034.156] (II) event3 - HID 04d9:1203: device is a keyboard [ 16034.156] (II) event3 - HID 04d9:1203: device removed [ 16034.180] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/0003:04D9:1203.0004/input/input16/event3" [ 16034.180] (II) XINPUT: Adding extended input device "HID 04d9:1203" (type: KEYBOARD, id 12) [ 16034.180] (**) Option "xkb_model" "pc105" [ 16034.180] (**) Option "xkb_layout" "us,ru" [ 16034.180] (**) Option "xkb_variant" " " [ 16034.180] (**) Option "xkb_options" "grp:caps_toggle,grp_led:scroll,compose:ralt" [ 16034.186] (II) event3 - HID 04d9:1203: is tagged by udev as: Keyboard [ 16034.186] (II) event3 - HID 04d9:1203: device is a keyboard [ 17059.525] (EE) event3 - HID 04d9:1203: client bug: event processing lagging behind by 35ms, your system is too slow [ 17172.109] (EE) event3 - HID 04d9:1203: client bug: event processing lagging behind by 22ms, your system is too slow
Отслеживание появления новых строк
oleg@mobile:~:$ tail -f /var/log/Xorg.0.log [ 16034.180] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/0003:04D9:1203.0004/input/input16/event3" [ 16034.180] (II) XINPUT: Adding extended input device "HID 04d9:1203" (type: KEYBOARD, id 12) [ 16034.180] (**) Option "xkb_model" "pc105" [ 16034.180] (**) Option "xkb_layout" "us,ru" [ 16034.180] (**) Option "xkb_variant" " " [ 16034.180] (**) Option "xkb_options" "grp:caps_toggle,grp_led:scroll,compose:ralt" [ 16034.186] (II) event3 - HID 04d9:1203: is tagged by udev as: Keyboard [ 16034.186] (II) event3 - HID 04d9:1203: device is a keyboard [ 17059.525] (EE) event3 - HID 04d9:1203: client bug: event processing lagging behind by 35ms, your system is too slow [ 17172.109] (EE) event3 - HID 04d9:1203: client bug: event processing lagging behind by 22ms, your system is too slow
Отслеживание строк в нескольких файлах одновременно
Перечисляем необходимые файлы в параметрах:
oleg@mobile:~:$ tail /var/log/nginx/base-error.log /var/log/nginx/biotoilet-error.log ==> /var/log/nginx/base-error.log
Изменение частоты обновления файла
По умолчанию файл обновляется каждую секунду. Периодичность обновления позволяет изменить опция -s :
oleg@mobile:~:$ tail -f -s 10 /var/log/nginx/access.log 127.0.0.1 - - [30/Nov/2021:14:02:54 +0200] "GET /favicon.ico HTTP/1.1" 404 187 "http://linuxcookbookru/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36" 127.0.0.1 - - [30/Nov/2021:14:03:31 +0200] "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36" 127.0.0.1 - - [30/Nov/2021:14:03:31 +0200] "GET /favicon.ico HTTP/1.1" 404 187 "http://svastiru/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36" 127.0.0.1 - - [30/Nov/2021:14:03:43 +0200] "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36" 127.0.0.1 - - [30/Nov/2021:14:03:44 +0200] "GET /favicon.ico HTTP/1.1" 404 187 "http://olegmensheninru/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36" 127.0.0.1 - - [30/Nov/2021:14:05:57 +0200] "GET /robots.txt HTTP/1.1" 404 187 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36" 127.0.0.1 - - [11/Dec/2021:14:35:25 +0200] "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36" 127.0.0.1 - - [11/Dec/2021:14:35:25 +0200] "GET /favicon.ico HTTP/1.1" 404 187 "http://linuxcookbookru/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36" 127.0.0.1 - - [11/Dec/2021:14:35:37 +0200] "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36" 127.0.0.1 - - [11/Dec/2021:14:35:37 +0200] "GET /favicon.ico HTTP/1.1" 404 187 "http://svastiru/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
Этот файл обновляется каждые 10 секунд.
Вывод N последних байт вместо N последних строк
oleg@mobile:~:$ tail -c 600 /var/log/nginx/access.log 36" 127.0.0.1 - - [11/Dec/2021:14:35:25 +0200] "GET /favicon.ico HTTP/1.1" 404 187 "http://linuxcookbookru/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36" 127.0.0.1 - - [11/Dec/2021:14:35:37 +0200] "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36" 127.0.0.1 - - [11/Dec/2021:14:35:37 +0200] "GET /favicon.ico HTTP/1.1" 404 187 "http://svastiru/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
Вывод отфильтрованных строк
oleg@mobile:~:$ tail -f /var/log/nginx/error.log | grep error 2021/07/29 13:53:13 [error] 194009#194009: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "biotoilet", referrer: "http://biotoilet/"
Вывод отфильтрованных строк очень удобен для поиска ошибок при анализе логов сервера.
Итоги
Примеры использования в Linux команды tail , приведённые в этой статье вы можете с успехом применять при анализе логов различных служб вашего сервера. Успехов вам!
Просмотр содержимого файлов в командной строке Linux
Рассмотрим несколько команд, которые используются для просмотра содержимого текстовых файлов в командной строке Linux.
Команда cat
Команда cat выводит содержимое файла, который передается ей в качестве аргумента.
Это самый простой и наиболее часто используемый способ для вывода содержимого текстовых файлов. Но выводить большие файлы через cat не всегда удобно.
Команда nl
Команда nl действует аналогично команде cat , но выводит еще и номера строк в столбце слева.
Команду nl удобно применять для просмотра программного кода или поиска строк в файлах конфигурации.
Команда less
Утилита less выводит содержимое файла, но отображает его только в рамках текущего окна в режиме просмотра.
Вы можете прокручивать текст файла клавишами стрелок или перелистывать страницы клавишами w и z .
Для поиска текста внутри файла нажмите / .
Для просмотра списка доступных горячих клавиш нажмите h
Чтобы выйти из режима просмотра используется клавиша q .
Очень удобно, что после выхода окно терминала остается чистым и не содержит текст файла.
Команда more
Команда more очень похожа на команду less . Она также выводит файл в терминале в режиме просмотра, но имеет некоторые отличия от команды less.
Например, less в конце файла выводит сообщение (END) (или EOF — End Of File) и ожидает нажатия клавиши q чтобы закрыть режим просмотра, а more по достижении конца файла сразу возвращает управление в терминал.
Также more после своей работы оставляет текст файла в терминале, а less работает «чисто» и не сохраняет текст в терминале.
Команда head
Команда head выводит на экран только первые 10 строк файла.
Используя опцию -n можно задать количество строк, которое нужно вывести. Например, чтобы вывести 15 строк используется команда:
Вместо -n можно просто использовать знак минус - , за которым сразу указывается количество строк.
Команда tail
Команда tail аналогична команде head , но выводит последние 10 строк файла.
Заключение
Команды, которые мы рассмотрели, имеют дополнительные возможности и области применения. Для получения справки по каждой команде можно воспользоваться Man-страницами.
man cat man nl man less man more man head man tail