← Назад к вопросам
Для чего используется команда tail?
1.2 Junior🔥 141 комментариев
#DevOps и инфраструктура
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Для чего используется команда tail
Определение и назначение
tail — это команда Unix/Linux, которая выводит последние строки файла. По умолчанию выводит последние 10 строк, но это можно изменить.
Основное назначение:
- Просмотр конца больших логов
- Мониторинг логов в реальном времени
- Отладка приложений
- Проверка последних событий в файле
Базовый синтаксис
# Вывести последние 10 строк (по умолчанию)
tail /var/log/app.log
# Вывести последние N строк
tail -n 20 /var/log/app.log
tail -20 /var/log/app.log
# Вывести последние N байт
tail -c 1024 /var/log/app.log
Мониторинг логов в реальном времени
-f флаг — follow mode, следит за изменениями файла:
# Следить за логом в реальном времени
tail -f /var/log/app.log
# Выводить последние 100 строк и следить
tail -f -n 100 /var/log/app.log
tail -100f /var/log/app.log
Это очень полезно для отладки:
# В одном терминале запускаешь приложение
npm start
# В другом терминале следишь за логом
tail -f logs/app.log
# Видишь ошибки в реальном времени
# Ошибка в логе появляется сразу после её возникновения
Практические примеры для бэкенда
Просмотр логов Docker контейнера:
# Вывести последние 100 строк логов контейнера
docker logs --tail 100 container_name
# Следить за логами контейнера в реальном времени
docker logs -f container_name
# С timestamp
docker logs -f --timestamps container_name
Мониторинг Node.js приложения:
# Если приложение логирует в файл
tail -f logs/server.log
# Вывести ошибки в реальном времени
tail -f logs/error.log | grep -E 'ERROR|Exception'
# Вывести последние 50 строк и следить
tail -50f logs/server.log
Анализ логов PostgreSQL:
# Просмотр логов БД
tail -f /var/log/postgresql/postgresql.log
# Найти slow queries
tail -f /var/log/postgresql/postgresql.log | grep 'duration:'
# Показать последние 20 ошибок
tail -100 /var/log/postgresql/postgresql.log | grep 'ERROR'
Полезные комбинации
tail + grep — фильтрация логов:
# Вывести ошибки из лога
tail -100 logs/app.log | grep ERROR
# Следить за ошибками в реальном времени
tail -f logs/app.log | grep 'ERROR\|WARN'
# Найти запросы к конкретному endpoint
tail -100 logs/requests.log | grep '/api/users'
# Следить за попытками входа
tail -f logs/auth.log | grep 'login'
tail + wc — подсчёт строк:
# Сколько строк в файле
wc -l logs/app.log
# Вывести последние 1000 строк
tail -1000 logs/app.log | wc -l
tail + less — постраничный просмотр:
# Просмотреть последние строки с пагинацией
tail -500 logs/app.log | less
# В less: пробел для следующей страницы, q для выхода
tail + sort/uniq — анализ:
# Найти самые частые ошибки
tail -1000 logs/app.log | grep ERROR | sort | uniq -c | sort -rn
# 50 most common HTTP status codes
tail -1000 logs/access.log | awk '{print $9}' | sort | uniq -c | sort -rn
Advanced использование
Следить за несколькими файлами одновременно:
# tail может следить за несколькими файлами
tail -f logs/app.log logs/error.log logs/access.log
# Выведет что-то вроде:
# ==> logs/app.log <==
# [2024-01-15] INFO: Server started
# ==> logs/error.log <==
# [2024-01-15] ERROR: Connection failed
# ==> logs/access.log <==
# GET /api/users 200
Мониторинг с номерами строк:
# Вывести номера строк вместе с содержимым
tail -50 logs/app.log | nl
# Вывести в реальном времени с номерами
tail -f logs/app.log | nl
Использование в скриптах:
#!/bin/bash
# Получить последние 100 строк лога
LAST_100_LINES=$(tail -100 logs/app.log)
# Проверить, есть ли критические ошибки
if echo "$LAST_100_LINES" | grep -q 'CRITICAL'; then
echo "Critical error found!"
# Отправить alert
mail -s "Critical error" admin@example.com
fi
# Вывести последний лог-запись
LAST_LINE=$(tail -1 logs/app.log)
echo "Last log entry: $LAST_LINE"
tail vs head
# tail — вывести последние N строк
tail -20 file.log
# head — вывести первые N строк
head -20 file.log
# Получить строки с 10 по 30
head -30 file.log | tail -20
Практический пример: отладка приложения
# Сценарий: приложение падает, нужно понять почему
# 1. Проверить последние строки лога
tail -50 logs/app.log
# 2. Если нужно больше контекста, получить 500 строк
tail -500 logs/app.log > /tmp/debug.log
# 3. Следить за логом при перезапуске приложения
tail -f logs/app.log &
npm start
# 4. Если нужна история, вывести всё
tail -n +1 logs/app.log > /tmp/full-log.log
tail в контексте обработки больших файлов
# Вывести последний 1GB большого файла
tail -c 1073741824 huge-file.log > last-1gb.log
# Вывести последний 1MB
tail -c 1048576 huge-file.log
# Не выводить на экран, а сохранить
tail -1000 logs/app.log > last-1000-lines.txt
Альтернативы tail
# GNU tail с дополнительными возможностями (Linux)
tail -f --lines=100 logs/app.log
# Using less (интерактивный)
less logs/app.log
# G — перейти в конец
# g — перейти в начало
# Using vim (текстовый редактор)
vim logs/app.log
:e (обновить файл)
G (в конец)
# Using journalctl (systemd логи)
journalctl -u app.service -n 100 -f
Заключение
Команда tail — это essential инструмент для:
- Мониторинга логов в реальном времени (
tail -f) - Отладки приложений (просмотр последних ошибок)
- Анализа событий (поиск по логам)
- Системного администрирования (проверка статуса сервера)
Для Node.js разработчиков:
tail -f logs/app.logпри развитии в локалиdocker logs -f container_nameпри работе с Dockertail -f | grep ERRORдля поиска ошибок
Это один из самых часто используемых инструментов для отладки в продакшене.