Команда tail в Linux: что это и как использовать.

Если вы начинаете работать с Linux или хотите понять, как управлять файлами в командной строке, то команда tail — это очень полезный инструмент.

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

Что такое команда tail в Linux?

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

Основные функции команды tail:

Просмотр последних строк файла.

Постоянное отслеживание изменений в файле (например, логах).

Защита от необходимости открывать весь файл целиком.

Как работает команда tail в Linux: пошаговое объяснение

0. Подготовка тестового файла

Если у вас есть файл логов (или любой другой), содержимое которого постоянно пополняется, можете пропустить данный шаг. Мы используем команду ping, и будем записывать результат в файл, это будет своего рода файл логов.

Выполним следующую команду:

waky@ubuntu:~$ ping google.com > ping.log &
[1] 1240
waky@ubuntu:~$

Мы в фоновом режиме (&) выполняем команду (ping google.com), результат которой записываем в файл (> ping.log). Процесс, в моем случае, запущен с идентификатором 1240 (у вас свой). После практики не забудьте прибить данный процесс командой kill:

kill 1240

1. Простое использование

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

tail имя_файла

Это покажет последние 10 строк файла, например в нашем случае это:

waky@ubuntu:~$ tail ping.log
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=326 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=327 ttl=115 time=122 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=328 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=329 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=330 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=331 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=332 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=333 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=334 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=335 ttl=115 time=123 ms
waky@ubuntu:~$

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

2. Изменение количества отображаемых строк

Если нужно вывести другое число строк, отличное от значения по умолчанию, используйте параметр -n:

tail -n 5 имя_файла

Например, последние 5 строк:

waky@ubuntu:~$ tail -n 5 ping.log
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=494 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=495 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=496 ttl=115 time=125 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=497 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=498 ttl=115 time=123 ms
waky@ubuntu:~$

Подготовим еще один тестовый файл, на этот раз статичный. Простой файл где в каждой строке будет цифра с номером данной строки:

waky@ubuntu:~$ echo -e "1\n2\n3\n4\n5\n6\n7\n8\n9" > simple.txt
waky@ubuntu:~$

Проверим файл с помощью команды cat:

waky@ubuntu:~$ cat simple.txt
1
2
3
4
5
6
7
8
9
waky@ubuntu:~$

Попробуем вывести последние 4  строки:

waky@ubuntu:~$ tail -n 4 simple.txt
6
7
8
9
waky@ubuntu:~$

Все верно, это строки с 6 по 9. А теперь попробуем использовать аргумент со знаком плюс (+4):

waky@ubuntu:~$ tail -n +4 simple.txt
4
5
6
7
8
9
waky@ubuntu:~$

Это запустит вывод с 4 строки включительно.

3. Постоянное отслеживание изменений — режим -f

Одно из основных применений tail — отслеживать все новые записи в файле в реальном времени. Для этого есть опция -f:

tail -f имя_файла

Это запустит команду и будет показывать новые строки, добавляемые в файл, пока вы не остановите её (например, Ctrl+C):

waky@ubuntu:~$ tail -f ping.log
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=1126 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=1127 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=1128 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=1129 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=1130 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=1131 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=1132 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=1133 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=1134 ttl=115 time=124 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=1135 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=1136 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=1137 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=1138 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=1139 ttl=115 time=123 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=1140 ttl=115 time=123 ms
^C
waky@ubuntu:~$

Мы увидели, как пополняется содержимое файла в реальном времени. Более нам не нужен процесс, запущенный на подготовительном этапе и можно его завершить:

waky@ubuntu:~$ kill 1240
waky@ubuntu:~$

4. Ограничение вывода по байтам

Кроме ограничения вывода числом строк, можно использовать ограничение по числу байт. За это отвечает опция -c:

tail -c 100 имя_файла

Например:

waky@ubuntu:~$ tail -c 100 ping.log
23 ms
64 bytes from lcarnb-ah-in-f14.1e100.net (142.251.142.238): icmp_seq=1361 ttl=115 time=122 ms
[1]+  Terminated              ping google.com > ping.log
waky@ubuntu:~$

Вывод содержит ровно столько байт информации, сколько мы задали.

Полезные советы по использованию команды tail

ПараметрЗначениеОписание
-nколичество строкУказывает сколько отображать строк.
-fв реальном времениПостоянно отслеживать изменения файла.
-cбайтыПоказывать последние байты файла, а не строки.

Почему команда tail так полезна?

  • Быстрый просмотр последних событий в логах.
  • Мониторинг процессов или приложений в реальном времени.
  • Анализ данных или ошибок без необходимости открывать весь файл.
  • Автоматизация задач, например, при написании скриптов.

Заключение

Команда tail — это незаменимый помощник для любого пользователя Linux. Она позволяет быстро смотреть последние строки файла и следить за происходящими изменениями.

Простая в использовании и очень полезная — она обязательно пригодится, если вы работаете с логами, файлами данных или просто хотите быстро проверить последние события.