Введение
Когда журналы в /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, а в корневом разделе.