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 сделает это за тебя и будет ждать новых событий, пока ты пьёшь кофе.
0 комментариев