SystemdDoctor
ConditionPathExists= [Unit]

Condition*= и Assert*=: условия запуска unit

Условия проверяются перед запуском. Если условие не выполнено, unit пропускается без ошибки. Утверждения (Assert*=) при невыполнении дают настоящую ошибку с записью в журнал.

Что делает

Разница принципиальна. Условие — это «не надо запускать»: служба остаётся неактивной, состояние не становится failed, мониторинг молчит. Утверждение — это «так быть не должно»: unit помечается упавшим и попадает в список сбоев.

Условий много: существование пути, тип окружения (физическая машина или контейнер), архитектура, первый запуск системы, наличие пользователя. Перед именем можно поставить восклицательный знак — тогда условие инвертируется.

Где ставится. В секции [Unit]. Работают для служб, таймеров, сокетов и прочих типов unit.

Значения

ЗначениеЧто происходит
ConditionPathExists=/etc/myapp/enabledзапускаться только если файл есть.
ConditionPathExists=!/etc/myapp/disabledинверсия: запускаться, если файла нет.
ConditionVirtualization=!containerне запускаться в контейнере.
ConditionFileNotEmpty=/etc/myapp/listфайл должен существовать и быть непустым.
AssertPathExists=/srv/dataотсутствие пути — ошибка, а не пропуск.

Пример

Служба, включаемая наличием файла-флага.

[Unit]
ConditionPathExists=/etc/myapp/enabled
ConditionVirtualization=!container

[Service]
ExecStart=/usr/local/bin/myapp

Такой приём удобен для одного unit-файла на парк машин: где файл-флаг есть, служба работает, где нет — тихо пропускается.

Типичные ошибки

Невыполненное условие оставляет службу неактивной без признаков ошибки: в мониторинге это выглядит как «не запущена».

Условие на путь, который появляется позже (монтирование), не выполняется при загрузке: нужен RequiresMountsFor=.

Утверждения помечают unit упавшим — не используйте их там, где пропуск нормален.

Связанные ошибки

Рядом стоящие параметры

Источники

  • systemd.unit(5) официальная документация
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04) собственная проверка
    сверено 15 сентября 2026