Wants= в systemd: мягкая зависимость
Просит systemd запустить другой unit вместе с этим, но не отменяет запуск, если тот не поднялся. Это рекомендуемый вид зависимости для большинства случаев.
Что делает
Мягкая зависимость делает систему устойчивее: падение вспомогательной службы не роняет всё остальное. Именно так работает механизм автозапуска: ссылка в каталоге *.target.wants — это Wants=, объявленный со стороны цели.
Где ставится. В секции [Unit]. Тот же результат даёт ссылка в каталоге имя.target.wants.
Значения
| Значение | Что происходит |
|---|---|
Wants=redis.service | кеш желателен, но его отсутствие не критично. |
Wants=network-online.target | стандартная пара к After=network-online.target. |
Пример
Приложение, которое умеет работать без кеша.
[Unit]
Wants=redis.service
After=redis.service
Requires=postgresql.service
After=postgresql.service
Разные виды зависимости в одном unit — нормальная практика: база обязательна, кеш нет.
Типичные ошибки
Служба запустится даже при упавшей зависимости: приложение должно быть готово к её отсутствию.
Wants= не задаёт порядок: нужен ещё After=.
Ссылки в каталогах *.wants создаются командой включения; удаление unit-файла без отключения оставляет битые ссылки.
Связанные ошибки
- Dependency failed for … и результат 'dependency'Сообщение Dependency failed for: служба не запускалась, потому что упала её зависимость. Как найти настоящего виновника.
- Connection refused в журнале службыСоединение отклонено: служба не может подключиться к базе, кешу или другому сервису. Порядок запуска, адрес, брандмауэр.
Рядом стоящие параметры
Где важен на практике
Источники
- systemd.unit(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)