Linux вывод последней строки файла

Команда tail Linux

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

Для этого можно использовать команду tail, она позволяет выводить заданное количество строк с конца файла, а также выводить новые строки в интерактивном режиме. В этой статье будет рассмотрена команда tail Linux.

Команда tail в Linux

Перед тем как мы будем рассматривать примеры tail linux, давайте разберем ее синтаксис и опции. А синтаксис очень прост:

$ tail опции файл

По умолчанию утилита выводит десять последних строк из файла, но ее поведение можно настроить с помощью опций:

  • -c — выводить указанное количество байт с конца файла;
  • -f — обновлять информацию по мере появления новых строк в файле;
  • -n — выводить указанное количество строк из конца файла;
  • —pid — используется с опцией -f, позволяет завершить работу утилиты, когда завершится указанный процесс;
  • -q — не выводить имена файлов;
  • —retry — повторять попытки открыть файл, если он недоступен;
  • -v — выводить подробную информацию о файле;

В качестве значения параметра -c можно использовать число с приставкой b, kB, K, MB, M, GB, G T, P, E, Z, Y. Еще есть одно замечание по поводу имен файлов. По умолчанию утилита не отслеживает изменение имен, но вы можете указать что нужно отслеживать файл по дескриптору, подробнее в примерах.

Использование tail

Теперь, когда вы знаете основные опции, рассмотрим приемы работы с утилитой. Самый простой пример — выводим последние десять строк файла:

Если вам недостаточно 10 строк и нужно намного больше, то вы можете увеличить этот параметр с помощью опции -n:

Когда вы хотите отслеживать появление новых строк в файле, добавьте опцию -f:

Вы можете открыть несколько файлов одновременно, просто перечислив их в параметрах:

tail /var/log/syslog /var/log/Xorg.0.log

С помощью опции -s вы можете задать частоту обновления файла. По умолчанию данные обновляются раз в секунду, но вы можете настроить, например, обновление раз в пять секунд:

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

Читайте также:  Linux как выбрать папку

tail -q var/log/syslog /var/log/Xorg.0.log

Если вас интересует не число строк, а именно число байт, то вы можете их указать с помощью опции -c:

Для удобства, вы можете выбирать не все строки, а отфильтровать интересующие вас:

tail -f /var/log/syslog | grep err

Особенно, это полезно при анализе логов веб сервера или поиске ошибок в реальном времени. Если файл не открывается, вы можете использовать опцию retry чтобы повторять попытки:

tail -f —retry /var/log/syslog | grep err

Как я говорил в начале статьи, по умолчанию опция -f или —follow отслеживает файл по его имени, но вы можете включить режим отслеживания по дескриптору файла, тогда даже если имя измениться, вы будете получать всю информацию:

tail —follow=descriptor /var/log/syslog | grep err

Выводы

В этой статье была рассмотрена команда tail linux. С помощью нее очень удобно анализировать логи различных служб, а также искать в них ошибки. Надеюсь, эта информация была полезной для вас.

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Команда Linux tail

Зачем нужна команда tail в Linux? Она позволяет вывести на экран конец файла. Это необходимо для просмотра новых данных, например в содержимом лог-файла.

Использование команды Linux tail с примерами

Синтаксис

Печать последних 10 строк каждого из ФАЙЛОВ на стандартный вывод. Если задано несколько ФАЙЛОВ, сначала печатается заголовок с именем файла. Если ФАЙЛ не задан или задан как — , читает стандартный ввод.

Опции

-c, —bytes=[+]N Показать последние N байт; или укажите -c +N , чтобы начать вывод каждого файла с N-го байта -f, —follow[=] Выводить поступающие данные по мере роста файла; при отсутствии параметра используется «descriptor» -F Эквивалент —follow=name —retry -n, —lines=N Выводить последние N строк, а не последние 10; или используйте -n +Н для вывода, начиная с N-ной —max-unchanged-stats=N С параметром —follow=name , повторно открывать ФАЙЛ, который не изменялся последние N (по умолчанию 5) итераций, чтобы проверить, не был ли он удалён или переименован (такое обычно бывает при ротации файлов системных журналов); при использовании механизма inotify этот параметр не требуется —pid=PID С параметром -f , прерваться, когда процесс PID завершает работу -q, —quiet, —silent Не выводить заголовки с именами файлов —retry Продолжать пытаться открыть файл даже когда он недоступен -s, —sleep-interval=С С параметром -f , бездействовать между повторениями примерно С секунд (по умолчанию 1.0); при использовании механизма inotify и —pid=P, проверять процесс P, по крайней мере, каждые С секунд -v, —verbose Всегда выводить заголовки с именами файлов -z, —zero-terminated Разделитель строк NUL, а не символ новой строки

После 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 и так далее.

Читайте также:  System monitor linux mint

С параметром —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 , приведённые в этой статье вы можете с успехом применять при анализе логов различных служб вашего сервера. Успехов вам!

Источник

Оцените статью
Adblock
detector