Как использовать команду tail в Linux
Команда Linux tail
отображает данные с конца файла. Он может даже отображать обновления, добавляемые в файл, в режиме реального времени. Мы покажем вам, как его использовать.
Убил ли systemd хвост?
Команда tail
показывает данные с конца файла. Обычно новые данные добавляются в конец файла, поэтому команда tail
— это быстрый и простой способ просмотреть самые последние добавления в файл. Он также может отслеживать файл и отображать каждую новую текстовую запись в этом файле по мере их появления. Это делает его отличным инструментом для мониторинга файлов журналов.
Многие современные дистрибутивы Linux используют систему systemd
и диспетчер служб. Это первый выполняемый процесс, он имеет идентификатор процесса 1 и является родителем всех остальных процессов. Раньше эта роль выполнялась старой системой init
.
Наряду с этим изменением появился новый формат файлов системного журнала. Больше не создаются в виде простого текста, в systemd
они записываются в двоичном формате. Чтобы прочитать эти файлы журналов, вы должны использовать утилиту journactl
. Команда tail
работает с форматами обычного текста. Бинарные файлы не читает. Значит ли это, что команда tail
— это решение для поиска проблемы? Ему еще есть что предложить?
Команда tail
— это больше, чем отображение обновлений в режиме реального времени. И в этом отношении все еще существует множество файлов журналов, которые не генерируются системой и по-прежнему создаются в виде простых текстовых файлов. Например, файлы журналов, созданные приложениями, не изменили своего формата.
Использование хвоста
Передайте имя файла в tail
, и он покажет вам последние десять строк из этого файла. Файлы примеров, которые мы используем, содержат списки отсортированных слов. Каждая строка пронумерована, поэтому будет легко следовать примерам и видеть, какое влияние оказывают различные параметры.
tail word-list.txt
Чтобы увидеть другое количество строк, используйте параметр -n
(количество строк):
tail -n 15 word-list.txt
На самом деле можно обойтись без «-n», а просто использовать дефис «-» и число. Убедитесь, что между ними нет промежутков. Технически это устаревшая форма команды, но она все еще есть на странице руководства и работает.
tail -12 word-list.txt
Использование хвоста с несколькими файлами
Вы можете заставить tail
работать с несколькими файлами одновременно. Просто передайте имена файлов в командной строке:
tail -n 4 list-1.txt list-2.txt list-3.txt
Для каждого файла отображается небольшой заголовок, чтобы вы знали, к какому файлу принадлежат строки.
Отображение строк с начала файла
Модификатор +
(отсчет от начала) заставляет tail
отображать строки с начала файла, начиная с определенного номера строки. Если ваш файл очень длинный и вы выбираете строку рядом с началом файла, вы получите много вывода, отправленного в окно терминала. В этом случае имеет смысл направить вывод из tail
в less
.
tail +440 list-1.txt
Вы можете листать текст контролируемым образом.
Поскольку в этом файле оказалось 20 445 строк, эта команда эквивалентна использованию опции «-6»:
tail +20440 list-1.txt
Использование байтов с хвостом
Вы можете указать tail
использовать смещения в байтах вместо строк, используя параметр -c
(bytes). Это может быть полезно, если у вас есть текстовый файл, отформатированный в записи обычного размера. Обратите внимание, что символ новой строки считается одним байтом. Эта команда отобразит последние 93 байта в файле:
tail -c 93 list-2.txt
Вы можете комбинировать параметр -c
(байты) с модификатором +
(отсчитывать от начала файла) и указывать смещение в байтах, считая от начала файла. файл:
tail -c +351053 list-e.txt
Трубопровод в хвост
Ранее мы передавали вывод tail
в less
. Мы также можем направить вывод других команд в tail
.
Чтобы определить пять файлов или папок с самым старым временем модификации, используйте параметр -t
(сортировка по времени модификации) с ls
и направьте вывод в tail
.
ls -tl | tail -5
Команда head
выводит список строк текста с начала файла. Мы можем объединить это с tail
, чтобы извлечь часть файла. Здесь мы используем команду head
для извлечения первых 200 строк из файла. Это передается в tail
, который извлекает последние десять строк. Это дает нам строки со 191 по 200. То есть последние десять строк из первых 200 строк:
head -n 200 list-1.txt | tail -10
Эта команда перечисляет пять процессов, которые потребляют больше всего памяти.
ps aux | sort -nk +4 | tail -5
Давайте сломаем это.
Команда ps
отображает информацию о запущенных процессах. Используемые варианты:
- a: список всех процессов, а не только текущего пользователя.
- u: отображать вывод, ориентированный на пользователя.
- x: список всех процессов, включая те, которые не запущены внутри TTY.
Команда sort
сортирует вывод из ps
. Параметры, которые мы используем с sort
:
- n: сортировка по числовому номеру.
- k +4: сортировка по четвертому столбцу.
Команда tail -5
отображает последние пять процессов из отсортированного вывода. Это пять самых требовательных к памяти процессов.
Использование tail для отслеживания файлов в режиме реального времени
Отследить новые текстовые записи, поступающие в файл — обычно файл журнала — легко с помощью tail
. Передайте имя файла в командной строке и используйте параметр -f
(follow).
tail -f geek-1.log
По мере добавления каждой новой записи журнала в файл журнала хвост обновляет свое отображение в окне терминала.
Вы можете уточнить вывод, включив в него только строки, представляющие особую актуальность или интерес. Здесь мы используем grep
для отображения только строк, содержащих слово «среднее»:
tail -f geek-1.log | grep average
Чтобы отслеживать изменения в двух или более файлах, передайте имена файлов в командной строке:
tail -f -n 5 geek-1.log geek-2.log
Каждая запись помечена заголовком, показывающим, из какого файла был взят текст.
Отображение обновляется каждый раз, когда в следующем файле появляется новая запись. Чтобы указать период обновления, используйте параметр -s
(период ожидания). Это говорит tail
ждать несколько секунд, пять в этом примере, между проверками файла.
tail -f -s 5 geek-1.log
Правда, по снимку экрана этого не скажешь, но обновления файла происходят раз в две секунды. Новые записи файлов отображаются в окне терминала раз в пять секунд.
Если вы отслеживаете добавление текста в более чем один файл, вы можете скрыть заголовки, указывающие, из какого файла журнала исходит текст. Для этого используйте параметр -q
(тихий):
tail -f -q geek-1.log geek-2.log
Вывод из файлов отображается в виде плавного смешения текста. Нет указания, из какого файла журнала была взята каждая запись.
хвост все еще имеет ценность
Хотя доступ к файлам системного журнала теперь предоставляется с помощью journalctl
, tail
по-прежнему может многое предложить. Это особенно верно, когда он используется в сочетании с другими командами, путем передачи в или из tail
.
systemd
, возможно, изменил ландшафт, но все еще есть место для традиционных утилит, которые соответствуют философии Unix: делать что-то одно и делать это хорошо.
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts