Недавно у меня возникла проблема с systemd, который не сохраняет логи с предыдущих загрузок. Я проверил несколько ответов здесь и в других местах, но не нашел решения.
проблема в том, что журнал пользователя сохраняется при каждой загрузке, а системные журналы — нет.
/etc/systemd/journald.conf
[Journal]
Storage=persistent
SystemMaxUse=500M
SystemMaxFiles=5
journalctl -b -1
[root@2ba2de9e /var/log/journal] # journalctl --system -b -1
Data from the specified boot (-1) is not available: No such boot ID in journal
Я использую Archlinux Arm на Raspberry Pi.
версии4.14.24-1-ARCH
systemd 237.64-1
systemd-sysvcompat 237.64-1
У кого-нибудь есть идеи, почему это происходит? На моем настольном компьютере это работает без проблем?
решение1
Возможно, journald удаляет старые журналы, потому что у вас не хватает места на диске. (Вы не упомянули, как долго после загрузки система -b -1
не работает, поэтому я не знаю, много ли у вас журналов с текущей загрузки на тот момент.)
Вы SystemMaxUse=500M
настроили, но journald может решить использовать менее 500 МБ, если у вас не так много свободного места на диске. Также есть настройка SystemKeepFree=...
, которая по умолчанию равна 15% от размера файловой системы (или 4 ГБ, что меньше), и journald будет применять это ограничение сильнее, чем то, сколько места вы разрешаете. Если у вас /var/log/journal
тесный раздел, возможно, это может быть частью проблемы.
Вы можете использовать некоторые команды, чтобы проверить, сколько места использует journald, например:
$ journalctl --disk-usage
А также посмотрите, сколько ботинок (и каково их время и идентификаторы) знает journald с помощью:
$ journalctl --list-boots
Они также могут помочь пролить свет на вашу проблему...
Надеюсь, это поможет!
решение2
Мой дистрибутив поставлялся с этим файлом: /etc/systemd/journald.conf.d/volatile-storage.conf
В нем была следующая строка
Storage=volatile
Изменяемую часть необходимо изменить на постоянную, в противном случае изменение /etc/systemd/journal.conf
будет проигнорировано.
решение3
Продление назеркалоответ, для работы Storage=volatile
и каталог должен существовать, а некоторые дистрибутивы не предоставляют это местоположение по умолчанию.Storage=auto
/var/log/journal
Поэтому вам нужно создать его и дать команду journald
сбросить на него все, что находится в памяти.
sudo mkdir /var/log/journal ## Enable persistent logging
sudo journalctl --flush