ExitType systemd: окончание главного процесса и всей группы означает разное

Запросить

Фотография конкретного исполнения не приложена.

Служба может состоять из управляющего процесса и нескольких работников. Если управляющий процесс выходит, оставшиеся процессы не всегда означают исправное приложение. Для корректного наблюдения нужно заранее определить, какой жизненный цикл представляет unit и кто отвечает за завершение остальных участников.

ExitType=main считает службу завершённой при выходе главного процесса, определённого согласно Type. ExitType=cgroup сохраняет состояние работы, пока в группе остаётся хотя бы один процесс. В справочнике 262 этот режим не допускается для Type=oneshot и предназначается для иной модели наблюдения, когда надёжно выделить главный процесс затруднительно.

Выбор cgroup не добавляет прикладную диагностику: оставшийся помощник может продолжать существовать после отказа полезной функции. При известной модели демона следует точно определить главный процесс. Для традиционного forking полагаться на угадывание PID рискованно, если приложение порождает несколько равноправных процессов; ошибка определения влияет на обнаружение отказа и рестарт.

На стенде отдельно завершают управляющий процесс, одного работника и последнего участника группы. Сверяют состояние unit с доступностью полезного интерфейса, политикой восстановления и очищением ресурсов. Эти результаты описывают в инструкции: оператору должно быть понятно, почему наличие хотя бы одного PID ещё не подтверждает восстановление сбора или обработки данных.

Основание — Official systemd manual edition262, cited sections only, разделы systemd.service ExitType; GuessMainPID. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Материал относится к справочникам systemd 262. Установленные Linux-дистрибутив, сборка systemd и возможности ядра не проверялись; изменения служб и настроек не выполнялись.

Все разборы