Состояния unit в systemd: active, failed, enabled, static, masked
У unit два независимых состояния. Первое — работает ли он сейчас (active, inactive, failed, activating). Второе — включён ли в автозапуск (enabled, disabled, static, masked).
Что делает
Путаница между ними — источник многих недоразумений. Служба может работать, но не быть в автозапуске: тогда после перезагрузки она не поднимется. И наоборот: включённая служба может быть остановлена.
Отдельного внимания стоит состояние active (exited): процессов нет, но unit считается активным. Так выглядят одноразовые задачи с RemainAfterExit=yes и обёртки вида postgresql.service.
Где ставится. Первое состояние показывает systemctl is-active, второе — systemctl is-enabled.
Значения
| Значение | Что происходит |
|---|---|
active (running) | работает, процессы есть. |
active (exited) | задача выполнена, процессов нет. |
active (waiting) | ждёт события: таймер, сокет, наблюдатель за путём. |
inactive (dead) | не работает; ошибки нет. |
failed | завершился с ошибкой; причина в строке Result. |
enabled | в автозапуске. |
static | включить нельзя: нет секции [Install]. |
masked | запрещён: подменён ссылкой на /dev/null. |
Пример
Проверка обоих состояний и списка сбоев.
systemctl is-active myapp.service
systemctl is-enabled myapp.service
systemctl --failed
systemctl list-units --state=failed --all
Команда systemctl --failed — самая полезная в обиходе: она сразу показывает всё, что сломалось.
Типичные ошибки
Работающая служба может быть не включена: после перезагрузки она не поднимется.
active (exited) у обёртки ничего не говорит о настоящей службе — смотрите нужный unit.
Состояние static означает не «отключена», а «включение не предусмотрено».
Состояние failed сохраняется до сброса: systemctl reset-failed.
Связанные ошибки
- status=0/SUCCESS, но служба считается упавшейПрограмма завершилась успешно, а systemctl показывает inactive или failed. Разбор: Type=simple против forking, RemainAfterExit, демонизация.
- Unit is masked: служба запрещена к запускуСообщение Unit is masked: unit заблокирован ссылкой на /dev/null. Как найти и снять маскировку.
- Unit … has no installation config: не включается автозапускsystemctl enable отказывает: в unit-файле нет секции [Install] или WantedBy. Как включить службу в автозапуск правильно.
- start-limit-hit: служба заблокирована после серии перезапусковСостояние start-limit-hit и сообщение start request repeated too quickly: systemd перестал перезапускать службу. Как разблокировать и найти исходную причину.
Рядом стоящие параметры
Где важен на практике
Источники
- systemctl(1)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)