scripts - units systemd
¿Cuál es la diferencia entre Systemd Service Type oneshot y simple? (2)
Desde el punto de vista de systemd, Type=simple
es una especie de fuego y olvido. Systemd simplemente ExecStart=
un proceso definido en ExecStart=
y sigue su camino, incluso si el proceso no se inicia.
¿Cuál es la diferencia entre el Type
servicio systemd
oneshot
y simple
? Este link indica que se debe usar simple
lugar de un solo oneshot
para los temporizadores. No soy capaz de entenderlo correctamente.
La unidad de servicio Type=oneshot
:
los bloques en una operación de inicio hasta que sale el primer proceso, y su estado se informará como "activándose";
una vez que sale el primer proceso, se pasa de "activar" directamente a "inactivo", a menos que se establezca
RemainAfterExit=true
(¡en cuyo caso se convierte en "activo" sin procesos!);puede tener cualquier número (0 o más) de directivas
ExecStart=
que se ejecutarán de forma secuencial (en espera de que se inicie cada proceso iniciado antes de iniciar el siguiente);puede omitir
ExecStart=
pero tieneExecStop=
(útil junto conRemainAfterExit=true
para organizar que las cosas se ejecuten en el cierre del sistema).
El Type=simple
unidad de servicio Type=simple
:
no se bloquea en una operación de inicio (es decir, se vuelve "activa" inmediatamente después de apagar el primer proceso, incluso si aún se está inicializando);
una vez que el primer proceso sale, las transiciones de "activo" a "inactivo" (no hay opción
RemainAfterExit=
);en general, se desaconseja porque no hay manera de distinguir situaciones como "salido en el inicio debido a un error de configuración" de "falla después de 500 ms de tiempo de ejecución" y similares.
Ambos Type=oneshot
y Type=simple
unidades Type=simple
:
- ignore los elementos secundarios del primer proceso, así que no use estos modos con procesos de forking (nota: puede usar
Type=oneshot
conKillMode=none
, pero solo haga esto si sabe lo que está haciendo ).