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

В какой директории расположены лог файлы Linux

1.6 Junior🔥 221 комментариев
#Linux и администрирование#Мониторинг и логирование

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

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

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

Расположение логов в Linux: стандарты, системные директории и специфика

В Linux логи расположены в основном в директории /var/log/. Это системная директория, где большинство демонов, служб и компонентов ядра хранят свои файлы журналов. Однако, важно понимать, что расположение может зависеть от дистрибутива, версии системы, используемого демона логирования и конфигурации конкретных приложений.

Основная системная директория: /var/log

/var/log — это стандартное место, определенное Filesystem Hierarchy Standard (FHS). Здесь находятся большинство критически важных логов системы. Вот ключевые файлы и поддиректории:

  • /var/log/syslog или /var/log/messages — основной системный журнал. В дистрибутивах на базе Debian/Ubuntu обычно используется syslog (обрабатывается rsyslog или syslog-ng), а в RHEL/CentOS — messages.
  • /var/log/auth.log (или /var/log/secure в RHEL) — журнал аутентификации. Содержит записи о входе в систему (успешных и неудачных), использовании sudo и других событиях безопасности.
  • /var/log/kern.log — журнал ядра Linux. Содержит сообщения от ядра, что особенно полезно при диагностике проблем с драйверами или оборудованием.
  • /var/log/dmesg — содержит кольцевой буфер сообщений ядра, загруженных при старте системы. Аналогичную информацию можно получить командой dmesg.
  • /var/log/boot.log — записи, относящиеся к процессу загрузки системы.
  • /var/log/cron — логи демона cron, выполняющего задания по расписанию.
  • /var/log/apt/ (Debian/Ubuntu) — логи менеджера пакетов APT (history.log, term.log).
  • /var/log/yum.log (RHEL/CentOS) — логи менеджера пакетов YUM.
  • Поддиректории для сервисов:
    *   `/var/log/apache2/` или `/var/log/httpd/` — логи веб-сервера Apache.
    *   `/var/log/nginx/` — логи веб-сервера Nginx.
    *   `/var/log/mysql/` или `/var/log/mariadb/` — логи СУБД MySQL/MariaDB.
    *   `/var/log/postgresql/` — логи СУБД PostgreSQL.
    *   `/var/log/containers/` — логи контейнеров (часто при использовании Podman).
    *   `/var/log/pods/` — логи подов в среде Kubernetes, развернутой на узле.

Современные системы: systemd и журнал journald

С внедрением systemd появился централизованный бинарный журнал, управляемый демоном systemd-journald. Его данные по умолчанию хранятся в /var/log/journal/ (если он включен) или в /run/log/journal/ (для текущей сессии, логи не сохраняются после перезагрузки). Для работы с этим журналом используется утилита journalctl.

# Просмотр всех журналов journald
journalctl

# Просмотр логов конкретного юнита (сервиса)
journalctl -u nginx.service

# Логи за определенное время
journalctl --since "2024-01-01 12:00:00" --until "2024-01-01 13:00:00"

# Отслеживание логов в реальном времени (follow)
journalctl -f

# Просмотр логов ядра
journalctl -k

Важное преимущество journalctl — возможность агрегированной фильтрации по множеству параметров (юнит, приоритет, временной интервал, идентификатор процесса), что часто удобнее, чем работа с отдельными текстовыми файлами.

Логи приложений и пользовательских сервисов

  • Специфичные пути: Многие приложения (особенно устанавливаемые из архивов или собираемые из исходников) могут писать логи в свои каталоги, например, /opt/app/logs/ или в домашнюю директорию пользователя ~/.cache/ или ~/.local/share/.
  • Контейнеризованные приложения: В Docker-контейнерах логи по умолчанию пишутся в json-файлы внутри /var/lib/docker/containers/<container_id>/<container_id>-json.log. Однако в продакшене логи контейнеров всегда следует направлять на стандартные потоки вывода (stdout/stderr) и агрегировать с помощью драйверов логирования (journald, json-file, syslog, Fluentd и др.) или sidecar-контейнеров в оркестраторах.
  • Настройка через конфигурационные файлы: Пути логирования часто определяются в конфигах приложений (например, в /etc/nginx/nginx.conf для Nginx) или в конфигурации демона логирования (/etc/rsyslog.conf, /etc/rsyslog.d/*.conf).

Ключевые команды для работы с логами

# Просмотр логов в реальном времени (tail -f)
tail -f /var/log/syslog

# Просмотр и фильтрация (grep)
grep "error" /var/log/syslog
grep -i "connection refused" /var/log/nginx/error.log

# Просмотр постранично (less)
less /var/log/auth.log

# Ротация логов (управляется logrotate)
ls -la /var/log/*.gz # Просмотр сжатых архивных логов

Ротация логов: /etc/logrotate.d/

Процесс ротации (архивации, сжатия и удаления старых логов) обычно управляется утилитой logrotate. Ее конфигурационные файлы для конкретных служб находятся в /etc/logrotate.d/. Например, /etc/logrotate.d/nginx определяет, как часто ротировать логи Nginx и сколько архивов хранить.

Итог для DevOps-инженера:

  1. Основное местоположение — /var/log/, но всегда проверяйте конфигурацию приложения (man <service>, конфиги в /etc/).
  2. Для систем на базе systemd используйте journalctl как основной инструмент первичной диагностики.
  3. Понимайте принципы ротации логов (logrotate), чтобы не столкнуться с заполнением диска.
  4. В производственных средах лог-файлы на серверах — лишь временное хранилище. Реальная работа с логами подразумевает их централизованный сбор (с помощью стека ELK, Loki, Fluentd), агрегацию и визуализацию для мониторинга и оперативного реагирования.