ExecCondition systemd: пропущенное задание нужно отличать от успешного выполнения
Фотография конкретного исполнения не приложена.
Иногда обслуживающая операция нужна только при наличии исходных данных или разрешённого окна. ExecCondition позволяет выполнить командную проверку перед основными командами службы. Результат проверки имеет собственную семантику и не должен подменять итог прикладного задания.
В руководстве 262 выход с кодом от 1 до 254 пропускает последующие команды и не помечает unit как failed. Код 255 или ненормальное завершение, например по сигналу либо тайм-ауту, приводят к отказу. Код 0 и статусы, отнесённые к успешным через SuccessExitStatus, позволяют продолжить последовательность. Поэтому договорённость о кодах проверяющей программы является частью интеграции.
ExecCondition не полностью эквивалентен директивам Condition в разделе Unit. Проверяющая команда выполняется уже внутри перехода активации; предусмотренные действия завершения могут отличаться. При ненулевом либо ненормальном результате применим также ExecStopPost. Нельзя механически перенести ожидания от проверки существования пути к любой командной проверке.
В отчёте обслуживающего задания отдельно показывают выполнение, осознанный пропуск и ошибку самой проверки. На стенде вызывают каждый предусмотренный исход и убеждаются, что оператор понимает причину. Отсутствие failed не является доказательством того, что архив создан, данные отправлены или требуемое обслуживание фактически состоялось.
Основание — Official systemd manual edition262, cited sections only, разделы systemd.service ExecCondition. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Материал относится к справочникам systemd 262. Установленные Linux-дистрибутив, сборка systemd и возможности ядра не проверялись; изменения служб и настроек не выполнялись.