Журналы systemd накапливают большие объёмы логов, что может привести к нехватке места на диске, снижению производительности или усложнению поиска нужных записей. Эта статья поможет как начинающим, так и опытным администраторам Linux понять, как безопасно очистить журналы systemd с помощью команды journalctl --vacuum-time, а также как организовать правильное управление логами.
Почему возникает необходимость очистить журналы systemd
- Логи занимают слишком много места на разделе
/varили на общем диске сервера. - По умолчанию systemd сохраняет журналы без жёстких ограничений по времени или размеру.
- В системах с интенсивной генерацией логов свободное место быстро заканчивается.
- Чтение и анализ журнала становятся медленными и затруднёнными из-за большого объёма данных.
Пошаговое руководство по очистке журналов systemd
- Проверьте, сколько места занимают журналы systemd
Перед очисткой узнайте объём занятого дискового пространства:journalctl --disk-usageВы увидите строку вида
Archived and active journals take up X.XG in the file system., которая покажет, сколько места занимают логи. - Определите необходимый период хранения логов
Решите, за какой срок логи вам важны. Например, 2 недели (2weeks) или месяц (1month).Для большинства серверов обычно достаточно хранения журналов 1-2 недели, но всё зависит от ваших задач и требований к аудиту.
- Удалите старые логи с помощью
journalctl --vacuum-time
Выполните команду, чтобы оставить только логи за выбранный срок (например, последние 2 недели, более старые — удалить):sudo journalctl --vacuum-time=2weeksКоманда удалит все журнальные файлы старше указанного срока. Если ошибок нет, процесс очистки не выводит информацию.
Внимание! Удалённые журналы восстановить нельзя. Убедитесь, что выбранный период соответствует требованиям по хранению и аудиту.
- Используйте ограничения по размеру или количеству файлов, если необходимо
Например, можно ограничить общий размер журналов 500 мегабайтами:sudo journalctl --vacuum-size=500MТакже можно задать максимум по количеству файлов журнала:
sudo journalctl --vacuum-files=10Подберите параметры индивидуально, исходя из ресурсов и задач вашей системы.
- Проверьте результат очистки
Повторно измерьте размер журналов:journalctl --disk-usageЕсли очистка прошла успешно, общий объём журналов уменьшится. Если изменений нет — проверьте, что команда запускалась с правами
sudoи не было блокировок со стороны служб или процесса systemd-journald.
Альтернативные методы очистки журналов systemd
- Полностью очистить все журналы:
sudo journalctl --rotate sudo journalctl --vacuum-time=1sЭти команды последовательно создадут новый файл журнала и удалят все старые. Используйте их только если уверены, что текущие логи не нужны.
- Отключить постоянное хранение журналов на диске:
sudo sed -i 's/^#Storage=.*/Storage=volatile/' /etc/systemd/journald.conf sudo systemctl restart systemd-journaldВ этом режиме логи будут храниться только в оперативной памяти и исчезать при перезагрузке. Такой метод не рекомендуется для серверов с требованиями долговременного хранения логов.
Проверка результата
- Проверьте текущий размер файлов журнала с помощью:
journalctl --disk-usageРазмер должен уменьшиться в соответствии с заданными ограничениями.
- Просмотрите логи за последние дни, чтобы убедиться, что устаревшие записи удалены:
journalctl --since="30 days ago"Если очистка прошла успешно, старые записи будут отсутствовать или количество логов будет соответствовать новым ограничениям.
Как предотвратить переполнение журналов systemd в будущем
- Установите в файле
/etc/systemd/journald.confжёсткие ограничения, например,SystemMaxUse=500MилиSystemMaxFileSize=100M, чтобы журналы не занимали слишком много места. - Регулярно контролируйте свободное место на разделе
/var/logи всего диска. - Настройте автоматическую очистку с помощью запуска
journalctl --vacuum-timeчерез планировщик задач (cron).
Часто задаваемые вопросы (FAQ)
Как узнать, сколько именно журналов будет удалено?
Команда journalctl не показывает список файлов перед удалением, но после выполнения команды очистки повторно выполните journalctl --disk-usage, чтобы увидеть разницу.
Можно ли полностью удалить все логи без ограничения по времени?
Да, можно использовать sudo journalctl --vacuum-time=1s, а также аналогичные параметры по размеру (--vacuum-size) или количеству файлов (--vacuum-files).
Нужно ли перезапускать службу systemd-journald после очистки?
Нет, перезапуск службы не требуется — очистка журналов применяется автоматически.
Правильное управление журналами в Linux помогает поддерживать систему в хорошем состоянии, предотвращая проблемы с дисковым пространством и упрощая поиск нужных записей.
Смотрите также: Как очистить журнал systemd, Как ограничить размер журнала systemd, Как очистить кэш apt и освободить место