В чем разница между сервисом systemd Type oneshot и simple? Эта ссылка заявляет, что для таймеров используется simple вместо oneshot. Я не могу понять это правильно.
В чем разница между Systemd Service Type onehot и простотой
Ответ 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= и продолжает свой путь, даже если процесс не запускается.