← Назад к вопросам

Для чего используется команда tail?

1.2 Junior🔥 141 комментариев
#DevOps и инфраструктура

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Для чего используется команда tail

Определение и назначение

tail — это команда Unix/Linux, которая выводит последние строки файла. По умолчанию выводит последние 10 строк, но это можно изменить.

Основное назначение:

  1. Просмотр конца больших логов
  2. Мониторинг логов в реальном времени
  3. Отладка приложений
  4. Проверка последних событий в файле

Базовый синтаксис

# Вывести последние 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 при работе с Docker
  • tail -f | grep ERROR для поиска ошибок

Это один из самых часто используемых инструментов для отладки в продакшене.

Для чего используется команда tail? | PrepBro