After и Requires в systemd: порядок и необходимость запуска проектируют отдельно
Фотография конкретного исполнения не приложена.
Запись After задаёт последовательность для units, участвующих в задании, но сама по себе не запускает указанную службу. Requires или Wants подключают зависимость к активации, однако не устанавливают нужный порядок автоматически. Поэтому одного знакомого имени в разделе Unit недостаточно для описания пуска связанной системы.
Если потребитель должен дождаться поставщика, проект рассматривает обе связи. Степень обязательности выбирают по последствиям отказа: зависимость Wants и более сильная Requires имеют разную семантику. При Requires вместе с After ошибка активации поставщика препятствует запуску потребителя. При этом Requires не гарантирует, что поставщик всегда остаётся active: например, неуспешная проверка условия и самостоятельная деактивация требуют отдельного рассмотрения.
Увеличить иллюстрацию
В документации схемы указывают поведение при штатной остановке, неожиданном завершении и пропущенной активации. Если требуется более сильная связь жизненного цикла, её обосновывают соответствующей директивой, а не приписывают Requires отсутствующее свойство. Учитывают обратный порядок остановки для упорядоченных units.
На стенде проверяют запуск каждой службы отдельно, общий запуск и остановку обеих. Дополнительно делают поставщика недоступным до старта. Такая матрица выявляет случай, когда проект случайно работал только потому, что нужный процесс уже был запущен вручную.
Основание — Official systemd manual edition262, cited sections only, разделы systemd.unit Requires; Wants; Before/After. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Материал относится к справочникам systemd 262. Установленные Linux-дистрибутив, сборка systemd и возможности ядра не проверялись; изменения служб и настроек не выполнялись.