SystemdDoctor
ExecCondition= [Service]

ExecCondition=: проверка перед запуском службы

Задаёт команду, которая выполняется перед запуском и решает его судьбу: нулевой код — запускать, от 1 до 254 — пропустить без ошибки, 255 и выше — настоящая ошибка.

Что делает

Это программируемая версия условий: когда проверку нельзя выразить параметром Condition*=, её пишут скриптом. Например проверить доступность внешнего сервиса или актуальность данных.

Особенность в трактовке кодов: обычная команда с ненулевым кодом означает сбой, а тут коды 1–254 означают «не надо запускать». Это нужно учитывать в скрипте, иначе служба будет молча пропускаться.

Где ставится. В секции [Service]. Выполняется раньше ExecStartPre=.

Значения

ЗначениеЧто происходит
ExecCondition=/usr/local/bin/should-run.shскрипт решает, запускать ли службу.
ExecCondition=/usr/bin/test -f /etc/myapp/enabledпростая проверка стандартной командой.

Пример

Запуск задачи только на активном узле кластера.

[Service]
Type=oneshot
ExecCondition=/usr/local/bin/is-primary-node
ExecStart=/usr/local/bin/nightly-report

Скрипт возвращает 0 на активном узле и 1 на остальных. Пассивные узлы просто пропустят задачу без записи о сбое.

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

Коды 1–254 означают пропуск, а не ошибку: служба не запустится, и в мониторинге это не сбой.

Код 255 и выше — настоящая ошибка. Скрипты с exit 255 ведут себя неожиданно.

Команда выполняется при каждом запуске, включая перезапуски: делайте её быстрой.

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

  • Failed with result 'exec-condition' и condition failedСостояния exec-condition и condition failed: запуск не состоялся, потому что условие не выполнено. Это не сбой, а задуманное поведение.
  • Failed with result 'exit-code'Состояние exit-code: служба завершилась с ненулевым кодом. Что это сообщение значит и где искать настоящую причину.

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

Источники

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