Linux

Освободите место в /var/log за 5 минут — очистка логов Linux

Если диск /var/log заполнился, система может перестать записывать логи, что приведёт к сбоям. В этом гайде вы узнаете, как быстро освободить место, очистить старые логи и предотвратить повторное переполнение.

Обновлено 10 июля 2026 г.
5-10 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 20.04Ubuntu 22.04Debian 11CentOS 8

Введение

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

Требования / Подготовка

  • Доступ с правами root (или через sudo).
  • Базовые утилиты: df, du, find, logrotate.
  • Резервное копирование важных логов (необязательно, но рекомендуется).

Пошаговая инструкция

Шаг 1: Проверить свободное место в /var/log

Выполните:

df -h /var/log

Если свободного места меньше 5 % от общего размера, продолжайте очистку.

Шаг 2: Удалить старые логи

Сначала найдите файлы старше 30 дней:

find /var/log -type f -name "*.log" -mtime +30 -print

Если список приемлем, удалите их:

find /var/log -type f -name "*.log" -mtime +30 -exec rm -v {} +

⚠️ Важно: Удаляйте только файлы, которые не являются критическими. Резервное копирование перед массовым удалением предотвратит потерю данных.

Шаг 3: Настроить logrotate

Откройте конфигурационный файл для syslog:

sudo nano /etc/logrotate.d/syslog

Добавьте следующий блок:

/var/log/syslog {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 0640 root adm
    sharedscripts
    postrotate
        /usr/bin/killall -HUP syslog-ng || true
    endscript
}

Проверьте синтаксис:

logrotate -d /etc/logrotate.d/syslog

Если ошибок нет, выполните ротацию вручную:

sudo logrotate -f /etc/logrotate.d/syslog

Шаг 4: Очистить временные файлы и журналы

Если используется systemd, очистите журналы:

sudo journalctl --vacuum-size=100M --rotate

Очистите временный каталог (если он не используется другими процессами):

sudo rm -rf /tmp/*

Шаг 5: Проверить результат

Повторите проверку свободного места:

df -h /var/log

Для детальной статистики:

du -sh /var/log/* | sort -hr | head -10

Проверка результата

После выполнения шагов свободное место в /var/log должно увеличиться. Если диск всё ещё переполнен, проверьте, есть ли другие каталоги, потребляющие место (например, /var/log/journal). Также убедитесь, что logrotate запланирован к выполнению ежедневно.

Возможные проблемы

  • Ошибка доступа: Permission denied при удалении файлов. Убедитесь, что у вас есть права владельца (sudo или root).
  • Неправильная конфигурация logrotate: Проверьте синтаксис с помощью logrotate -d и исправьте ошибки.
  • Службы, сохраняющие логи: Некоторые приложения используют собственные механизмы ротации. Проверьте их конфигурации (например, /etc/apache2/apache2.conf).
  • Высокое использование диска: Если очистка не помогла, проверьте другие разделы (df -h), возможно, проблема не в /var/log, а в корневом разделе.

Часто задаваемые вопросы

Почему /var/log заполняется и как это влияет на систему?
Безопасно ли вручную удалять файлы в /var/log?
Как предотвратить повторное переполнение /var/log?
Что делать, если logrotate не работает после изменений?

Полезное

Проверить свободное место в /var/log
Удалить старые логи
Настроить logrotate
Очистить временные файлы и журналы
Проверить результат

Эта статья помогла вам решить проблему?