В чем разница между Systemd Service Type onehot и простотой

В чем разница между сервисом systemd Type oneshot и simple? Эта ссылка заявляет, что для таймеров используется simple вместо oneshot. Я не могу понять это правильно.

Ответ 1

Type=oneshot обслуживания Type=oneshot:

  • блоки при запуске до тех пор, пока не завершится первый процесс, и его состояние будет объявлено как "активирующее";

  • как только первый процесс завершается, происходит переход от "активации" прямо к "неактивному", если не установлен параметр RemainAfterExit=true (в этом случае он становится "активным" без процессов!);

  • может иметь любое число (0 или более) директив ExecStart= которые будут выполняться последовательно (ожидая, когда каждый начатый процесс завершит работу до начала следующего);

  • может оставить ExecStart= но имеет ExecStop= (полезно вместе с RemainAfterExit=true для организации RemainAfterExit=true которые будут выполняться при выключениях системы).

Type=simple сервисный модуль:

  • не блокируется при запуске (т.е. становится "активным" сразу после отмены первого процесса, даже если он все еще инициализируется!);

  • как только первый процесс завершается, переходит из "активного" в "неактивный" (отсутствует опция RemainAfterExit=);

  • как правило, обескураживается, потому что нет способа отличить ситуации, такие как "вышли на старт из-за ошибки конфигурации" из "сбой после 500 мс времени исполнения" и т.п.

Оба Type=oneshot и Type=simple units:

  • игнорировать любых детей первого процесса, поэтому не используйте эти режимы с процессами Type=oneshot (обратите внимание: вы можете использовать Type=oneshot с KillMode=none, но только делайте это, если знаете, что делаете).

Ответ 2

С точки зрения systemd, Type=simple является видом огня и забывает. Systemd просто ExecStart= процесс, определенный в ExecStart= и продолжает свой путь, даже если процесс не запускается.