Tail — это такой циничный сторож, который не читает всё, а сразу лезет в конец. Неважно, файл это или поток данных — он покажет тебе самое свежее, что туда прилетело. А если попросишь, будет сидеть и караулить дальше, пока не скажешь «хватит». Идеален для логов, косяков и прочих неожиданностей.

Есть в Linux команды с пафосными именами, а есть tail — хвост. И смысл тут прямой: эта штука показывает хвост файла. По умолчанию — последние 10 строк. Всё. Ни приветствий, ни пафоса, просто срез с конца.

Зачем это? Да потому что в реальной работе тебе чаще всего плевать на старую историю. Когда сервис сдох, тебе нужно понять, что произошло прямо сейчас. Вот тут tail и выручает.

Базовое использование — «дай последние 10 строк и не выпендривайся»

tail filename.txt

Без опций — просто последние 10 строк. Если файл большой, это сэкономит тебе кучу времени и нервов. Если маленький — ну, будет пусто, не страшно.

Выводить не 10, а сколько скажешь

Хочешь 50 строк? Получай:

tail -n 50 filename.txt

Лениво печатать -n? Можно так:

tail -50 filename.txt

Это не магия, просто короткая форма.

Смотреть не строки, а байты

Иногда важен не текст, а точное количество байтов — например, когда ты ковыряешь бинарники или обрезанный дамп:

tail -c 500 filename.txt

Можно играться с суффиксами: 2k — это 2048 байт, 5M — 5 мегабайт (1048576×5, если быть занудой).

Самое полезное — смотреть изменения в реальном времени

Вот где tail становится оружием. Опция -f:

tail -f /var/log/nginx/error.log 

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

А если лог ротируется?

Логи любят меняться и перезаписываться (logrotate, привет). Чтобы tail не потерялся, используй -F:

tail -F /var/log/nginx/error.log 

Он дождётся, пока лог появится заново, и продолжит следить. Без твоего участия.

Несколько файлов за раз

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

tail -n 20 backend.log frontend.log 

Вывод будет с пометками, что откуда.

Когда tail дружит с grep и прочими

В связке с grep это вообще чит-код. Например, чтобы отслеживать только ошибки от конкретного IP:

tail -f /var/log/apache2/access.log | grep 192.168.42.12

Или хочешь посмотреть последние строки списка процессов, отсортированных по CPU:

ps aux | sort -nk +3 | tail -5

Тут tail не только про логи, а вообще про работу с потоками данных.

Когда сервис падает раз в пару часов, а ты устал лазить в огромные логи — tail с -f и grep превращаются в охотничью засаду. Сидишь, ждёшь, и как только вылетает нужная строка, ты тут же понимаешь, что произошло.

Главное — не забыть, что Ctrl+C останавливает слежку, а то можно зависнуть в терминале на ночь.

Итог

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

Если ты до сих пор листаешь файлы через less и ищешь последние строки вручную — ты просто тратишь время. Tail сделает это за тебя и будет ждать новых событий, пока ты пьёшь кофе.