systemd-analyze: проверка unit, разбор загрузки и расписаний
Набор инструментов для разбора: проверка unit-файлов, оценка изоляции службы, разбор календарных выражений, анализ времени загрузки, расшифровка кодов выхода.
Что делает
Это самый недооценённый инструмент systemd. verify разбирает unit-файл так же, как менеджер, и печатает претензии — быстрее, чем пытаться запустить. calendar проверяет расписание таймера. exit-status расшифровывает код выхода без поиска по таблицам.
Отдельно стоит security: он оценивает, насколько служба изолирована, и перечисляет параметры, которые стоит добавить. Оценка условна, но перечень полезен как список идей.
Где ставится. Команда в терминале.
Значения
| Значение | Что происходит |
|---|---|
systemd-analyze verify /путь/unit | проверка файла без запуска. |
systemd-analyze calendar "Mon 03:00" | разбор расписания и ближайшие срабатывания. |
systemd-analyze exit-status 203 | имя и класс кода выхода. |
systemd-analyze blame | сколько запускался каждый unit. |
systemd-analyze critical-chain | цепочка, определившая время загрузки. |
systemd-analyze security имя | оценка изоляции службы. |
systemd-analyze syscall-filter @system-service | состав набора системных вызовов. |
Пример
Проверка unit-файла и расписания до запуска.
systemd-analyze verify /etc/systemd/system/backup.service
systemd-analyze calendar "*-*-* 03:00:00"
systemd-analyze exit-status 203 217 226
Первые две команды стоит выполнять всегда перед перезапуском: они находят большинство ошибок без простоя службы.
Типичные ошибки
verify не знает вашего окружения: существование файлов и пользователей он не проверяет.
Оценка изоляции в security условна: низкая оценка не означает, что служба небезопасна.
blame показывает длительность запуска, а не влияние на общее время: для второго есть critical-chain.
Связанные ошибки
- Unit file is bad и ошибки разбора unit-файлаsystemd не может разобрать unit-файл: неизвестные параметры, ошибки в секциях, недопустимые значения. Как найти проблемную строку.
- Failed to parse calendar expression: ошибка в OnCalendarsystemd не разбирает календарное выражение таймера. Правила записи OnCalendar и проверка через systemd-analyze calendar.
- status=244/BPF в systemdКод 244/BPF: не удалось применить ограничения через BPF, например RestrictFileSystems=. В man-странице systemd этот код указан неверно.
Рядом стоящие параметры
Источники
- systemd-analyze(1)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)