Target в systemd: цели загрузки вместо уровней запуска
Цель — unit, который ничего не запускает сам, а служит точкой синхронизации: набором зависимостей, достижение которого означает готовность определённого состояния системы.
Что делает
Цели заменили уровни запуска из sysvinit, но устроены иначе: их можно достигать параллельно, и они образуют дерево, а не линейную шкалу. Цель по умолчанию задаётся командой systemctl set-default и определяет, что запускается при загрузке.
Практически важны несколько целей. multi-user.target — обычное рабочее состояние сервера. network-online.target — сеть готова к использованию, а не просто настраивается. local-fs.target — локальные файловые системы смонтированы. rescue.target и emergency.target — режимы восстановления.
Где ставится. Цели используются в WantedBy=, After=, Requires= и в команде systemctl isolate.
Значения
| Значение | Что происходит |
|---|---|
multi-user.target | обычное рабочее состояние сервера. |
graphical.target | то же плюс графический сеанс. |
network-online.target | сеть готова: адреса получены. |
local-fs.target | локальные файловые системы смонтированы. |
rescue.target | однопользовательский режим восстановления. |
emergency.target | минимальный режим: только оболочка. |
Пример
Проверка цели по умолчанию и разбор долгой загрузки.
systemctl get-default
systemctl list-dependencies multi-user.target
systemd-analyze critical-chain
Последняя команда показывает цепочку, определившую время загрузки: по ней видно, какая цель ждала дольше всех.
Типичные ошибки
network-online.target достигается только если включена служба ожидания сети: иначе она пассивна.
graphical.target на сервере не достигается: службы, привязанные к ней, не запустятся.
Цель не запускает службы сама: их привязывает к ней механизм автозапуска через WantedBy=.
Связанные ошибки
- Цель не достигнута: служба ждёт target, который не наступаетСлужба не запускается, потому что не достигнута цель из After= или Requires=. Разбор целей multi-user, network-online, graphical.
- You are in emergency mode: система не загрузиласьЗагрузка остановилась в аварийном режиме. Что проверять: fstab, файловые системы, цель по умолчанию. Как войти и починить.
- WantedBy= в неверной секции: автозапуск не работаетПараметр WantedBy= указан в [Unit] вместо [Install]. Служба запускается вручную, но не поднимается после перезагрузки.
Рядом стоящие параметры
Источники
- systemd.special(7)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)