Команда 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:
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.
Эффективное управление файлами с помощью команд head, tail и cat в Linux
Linux предоставляет несколько команд и программ для просмотра содержимого файла. Работа с файлами является одной из самых сложных задач, которую выполняет большинство пользователей компьютеров, будь то новичок, обычный пользователь, опытный пользователь, разработчик, администратор и т. д. Работать с файлами эффективно и результативно — это искусство.
Сегодня в этой статье мы обсудим самые популярные команды под названием head, tail и cat, большинство из нас уже знают о таких командах, но очень немногие из нас реализуют его, когда это необходимо.
1. Головная команда
Команда head читает первые десять строк любого заданного имени файла. Основной синтаксис команды head:
Например, следующая команда отобразит первые десять строк файла с именем «/etc/passwd».
# head /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh
Если задано более одного файла, head покажет первые десять строк каждого файла отдельно. Например, следующая команда покажет десять строк каждого файла.
# head /etc/passwd /etc/shadow ==> /etc/passwd /etc/shadowЕсли требуется получить большее количество строк, чем десять по умолчанию, используется параметр «-n» вместе с целым числом, указывающим количество строк, которые необходимо получить. Например, следующая команда отобразит первые 5 строк из файла «/var/log/yum.log».
# head -n5 /var/log/yum.log Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686 Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686 Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686 Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarchНа самом деле нет необходимости использовать опцию «-n». Просто дефис и укажите целое число без пробелов, чтобы получить тот же результат, что и в приведенной выше команде.
# head -5 /var/log/yum.log Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686 Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686 Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686 Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarchКоманда head также может отображать любое желаемое количество байтов, используя параметр «-c», за которым следует количество отображаемых байтов. Например, следующая команда отобразит первые 45 байт данного файла.
# head -c45 /var/log/yum.log Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el2. хвостовая команда
Команда tail позволяет отображать последние десять строк любого текстового файла. Как и команда head, описанная выше, команда tail также поддерживает параметры «n» количество строк и «n» количество символов.
Основной синтаксис команды tail:
# tail [options] [filenames]Например, следующая команда напечатает последние десять строк файла с именем «access.log».
# tail access.log 1390288226.042 0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html 1390288226.198 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.210 1182 172.16.20.44 TCP_MISS/200 70872 GET http://mahavat.gov.in/Mahavat/index.jsp pg DIRECT/61.16.223.197 text/html 1390288226.284 70 172.16.20.44 TCP_MISS/304 269 GET http://mahavat.gov.in/Mahavat/i/i-19.gif pg DIRECT/61.16.223.197 - 1390288226.362 570 172.16.176.139 TCP_MISS/200 694 GET http://p4-gayr4vyqxh7oa-3ekrqzjikvrczq44-if-v6exp3-v4.metric.gstatic.com/v6exp3/redir.html pg 1390288226.402 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.437 145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.445 0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.605 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.808 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/htmlЕсли предоставлено более одного файла, tail напечатает последние десять строк каждого файла, как показано ниже.
# tail access.log error.log ==> access.log error_logТочно так же вы также можете напечатать последние несколько строк, используя параметр «-n», как показано ниже.
# tail -5 access.log 1390288226.402 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.437 145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.445 0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.605 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.808 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/htmlВы также можете напечатать количество символов, используя аргумент ‘-c’, как показано ниже.
# tail -c5 access.log ymantec.com:443 - NONE/- text/html3. Кошка Команда
Команда «cat» является наиболее широко используемым универсальным инструментом. Он копирует стандартный ввод в стандартный вывод. Команда поддерживает прокрутку, если текстовый файл не помещается на текущем экране.
Основной синтаксис команды cat:
# cat [options] [filenames] [-] [filenames]Чаще всего cat используется для чтения содержимого файлов. Все, что требуется, чтобы открыть файл для чтения, — это ввести cat, затем пробел и имя файла.
# cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh …Команда cat также используется для объединения нескольких файлов.
# echo 'Hi Tecmint-Team' > 1 # echo 'Keep connected' > 2 # echo 'Share your thought' > 3 # echo 'connect us ' > 4# cat 5 Hi Tecmint-Team Keep connected Share your thought connect usЕго также можно использовать для создания файлов. Это достигается выполнением команды cat, за которой следует оператор перенаправления вывода и имя создаваемого файла.
# cat > tecmint.txt Tecmint is the only website fully dedicated to Linux.У нас может быть специальный концевик для команды «кошка». Вот это реализовано.
# cat test.txt I am Avishek Here i am writing this post Hope your are enjoyingНикогда не недооценивайте силу команды «cat», она может быть полезна для копирования файлов.
# cat avi.txt I am a Programmer by birth and Admin by profession# cat avi1.txt I am a Programmer by birth and Admin by professionТеперь, что является противоположностью кошки? Да, это «tac». «tac» — это команда в Linux. Лучше показать пример такта, чем что-то говорить о нем.
Создайте текстовый файл с названиями всех месяцев, чтобы в строке отображалось одно слово.
# cat month January February March April May June July August September October November December# tac month December November October September August July June May April March February JanuaryДополнительные примеры использования команды cat см. в разделе Использование команды 13 cat.
Это все на данный момент. Я буду здесь снова с другой интересной статьей, которую стоит знать. А пока следите за обновлениями и подключайтесь к Tecmint. Не забудьте предоставить нам свои ценные отзывы в нашем разделе комментариев.