Всем привет! После почти двух лет молчания вновь возникло желание делиться житейским опытом админских будней.

Анализ посещаемости сайта показал, что наиболее востребованными темами являются темы про Mac и Linux для начинающих, так что пожалуй на них и сделаю акцент в ближайших выпусках.

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

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

Выполним команду применительно к syslog:

В выдаче мы получим 10 последних строк syslog, после чего команда завершит свою работу.

Мы можем регулировать количество строк для выдачи через ключ —n:

Теперь мы видим последние 20 строк.

Так-же мы можем выводить последние n байт с помощью ключа —c:

Отличительной чертой команды tail является ее возможность не завершаться по достижении конца вывода, а ожидать появления новых данных. Для этого добавим ключ —f:

В любом из режимов она прекрасно сочетается с grep, так что мы можем выбирать только те строки, которые нужны:

Ключ —s позволит изменить время между итерациями проверки новых данных с ключом —f. Это существенно облегчает задачу чтения логов при больших потоках данных:

При чтении логов с ротацией, полезно будет открывать файл заново , если за последние n итераций не было изменений. Достигается это ключом —max-unchanged-stat:

Встречается ситуация, когда отлаживается запуск софта и можно долго ждать новых логов, а сама программа, чьи логи мы читаем уже успешно терминировалась. Тут на помощь приходит ключ —pid, который при импользовании ключа -f позволяет завершать работу tail при завершении работы приложения:

Как только процесс с PID 1705 завершится, tail последует за ним.

А вот теперь расскажу про одну штуку с tail, про которую не знал ни один из опрошенных мной администраторов.

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

Если мы захотим видеть все без разделителей с именами файлов, достаточно добавить ключ —q:

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

На этом на сегодня все, спасибо за внимание!