DefaultDependencies=no: отключение неявных зависимостей
Отключает неявные зависимости, которые systemd добавляет каждому unit: порядок относительно базовой цели, конфликт с целью выключения и прочее.
Что делает
По умолчанию службе добавляются зависимости, из-за которых она запускается после базовой инициализации и останавливается при выключении. Это правильно почти всегда. Отключают их только для служб, работающих на самых ранних этапах загрузки — например для тех, что должны стартовать до монтирования файловых систем.
Опасность в том, что вместе с удобством исчезают и гарантии: служба может запуститься до того, как готова файловая система или журнал, и вести себя непредсказуемо.
Где ставится. В секции [Unit].
Значения
| Значение | Что происходит |
|---|---|
yes | по умолчанию: неявные зависимости добавляются. |
no | unit остаётся без неявных зависимостей — все нужные придётся объявить вручную. |
По умолчанию: yes
Пример
Служба самой ранней стадии загрузки.
[Unit]
DefaultDependencies=no
Before=sysinit.target
Conflicts=shutdown.target
Before=shutdown.target
Обратите внимание: конфликт с целью выключения приходится объявлять вручную — иначе служба не будет остановлена при выключении.
Типичные ошибки
Без неявных зависимостей служба может запуститься до готовности журнала: её сообщения потеряются.
Забытый конфликт с целью выключения приводит к тому, что служба не останавливается при выключении машины.
Для обычных прикладных служб отключать неявные зависимости не нужно никогда.
Связанные ошибки
- Found ordering cycle: циклическая зависимость при загрузкеsystemd нашёл цикл в порядке запуска и разорвал его, отбросив одну зависимость. Как найти цикл и правильно расставить After и Requires.
- Цель не достигнута: служба ждёт target, который не наступаетСлужба не запускается, потому что не достигнута цель из After= или Requires=. Разбор целей multi-user, network-online, graphical.
- You are in emergency mode: система не загрузиласьЗагрузка остановилась в аварийном режиме. Что проверять: fstab, файловые системы, цель по умолчанию. Как войти и починить.
Рядом стоящие параметры
Источники
- systemd.unit(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)