RequiredBy= в systemd: жёсткое включение в цель
Как WantedBy=, но создаёт ссылку в каталоге цель.requires: цель будет требовать этот unit, а не просто желать его. Неудача службы отразится на достижении цели.
Что делает
Разница в последствиях. Служба, включённая через WantedBy=, при падении никому не мешает. Служба, включённая через RequiredBy=, тянет за собой цель: если она не поднялась, цель считается недостигнутой, и это может остановить загрузку.
Поэтому для прикладных служб почти всегда нужен WantedBy=. RequiredBy= оправдан только там, где без службы система действительно неработоспособна.
Где ставится. Только в секции [Install].
Значения
| Значение | Что происходит |
|---|---|
multi-user.target | цель будет требовать эту службу. |
Пример
Служба, без которой машина не имеет смысла.
[Install]
RequiredBy=multi-user.target
Применяйте осознанно: падение такой службы влияет на достижение цели и может остановить загрузку в аварийном режиме.
Типичные ошибки
Падение службы влияет на цель: загрузка может уйти в аварийный режим.
Для обычных прикладных служб это излишне жёстко — берите WantedBy=.
Связанные ошибки
- Dependency failed for … и результат 'dependency'Сообщение Dependency failed for: служба не запускалась, потому что упала её зависимость. Как найти настоящего виновника.
- You are in emergency mode: система не загрузиласьЗагрузка остановилась в аварийном режиме. Что проверять: fstab, файловые системы, цель по умолчанию. Как войти и починить.
- Цель не достигнута: служба ждёт target, который не наступаетСлужба не запускается, потому что не достигнута цель из After= или Requires=. Разбор целей multi-user, network-online, graphical.
Рядом стоящие параметры
Источники
- systemd.unit(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)