Записи пользовательской службы не находятся обычным запросом
Пользовательские службы пишут в свой журнал. Обычный запрос по имени unit ищет в системной области и ничего не находит. Это не потеря записей, а не тот запрос.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Запрос идёт в системную область
Системный и пользовательский журналы разделены. Без указания области поиск идёт по системному.
-
Служба запущена в другом сеансе пользователя
При включённом продолжении работы без входа служба работает в своём менеджере. Записи попадают в журнал того пользователя.
-
Пользовательский журнал не сохраняется
Без постоянного журнала записи пользовательских служб исчезают при выходе и перезагрузке.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Журнал пользовательской службы.
journalctl --user -u myapp.service -n 20 --no-pagerЕсть ли такая пользовательская служба.
systemctl --user list-units "myapp*" --no-legendРаботает ли менеджер пользователя без входа.
loginctl show-user "$USER" -p LingerРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Системный и пользовательский журналы разделены. Без указания области поиск идёт по системному.
- Как проверить
-
Повторите запрос с указанием пользовательской области.
journalctl --user -u myapp.service -n 10 --no-pager
- Как исправить
-
Для пользовательских служб всегда указывайте область. Из-под root можно указать пользователя явно.
sudo journalctl _UID=1001 -u myapp.service -n 20
- Почему происходит
- При включённом продолжении работы без входа служба работает в своём менеджере. Записи попадают в журнал того пользователя.
- Как проверить
-
Посмотрите менеджер и продолжение работы.
loginctl show-user "$USER" -p Linger systemctl --user list-units "myapp*" --no-legend
- Как исправить
- Смотрите журнал от имени того пользователя, чей менеджер запускает службу.
- Почему происходит
- Без постоянного журнала записи пользовательских служб исчезают при выходе и перезагрузке.
- Как проверить
-
Посмотрите каталоги журнала.
sudo ls /var/log/journal/*/user-*.journal 2>/dev/null | head
- Как исправить
- Включите постоянное хранение журнала: пользовательские записи сохраняются в отдельных файлах того же каталога.
Пример вывода
Запрос без указания области ничего не находит. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
$ journalctl -u backup.service
-- No entries --
$ journalctl --user -u backup.service -n 2 --no-pager
systemd[1520]: Started backup.service - Nightly backup.
backup.sh[1533]: rsync: 12482 files transferred
Связанные ошибки
- Служба пользователя не запускается или не переживает выход systemctl --user: служба останавливается при выходе из системы. Разбор lingering и отличий от системных служб.
- Обычный пользователь не видит журнал службы journalctl показывает только свои записи: доступ к системному журналу даёт членство в группе.
- Таймер пользователя не срабатывает Таймер в менеджере пользователя не работает без входа в систему: нужна задержка сеанса.
- File corrupted or uncleanly shut down, renaming and replacing Журнал повреждён после жёсткой перезагрузки: что означает сообщение и когда нужно вмешательство.
- Suppressed N messages from unit: часть записей потеряна journald отбросил часть записей из-за ограничения частоты. Как понять, что именно потеряно, и когда предел нужно поднять.
- journalctl -b -1: Failed to look up boot, no such boot ID Запрос журнала прошлой загрузки не находит её: журнал непостоянный или обрезан.
- rsyslog: ошибка файла состояния при чтении журнала Приёмник журналов теряет записи или читает их заново: файл состояния повреждён или недоступен.
- В журнале контейнера видны записи хоста Журнал внутри контейнера показывает не то, что ожидалось: каталог журнала хоста проброшен внутрь.
Где встречается чаще всего
Источники
-
journalctl(1)
Системная и пользовательская области журнала. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено пользовательской службой и запросом без области.