Tengo una pregunta general. ¿Cómo se inicia una unidad systemd *.service
después de que una en particular se *.service
haya iniciado con éxito?
La pregunta más específica es, ¿cómo empiezo website.service
solo después de que mongodb.service
ha comenzado? En otras palabras, website.service
debería depender de mongodb.service
.
Respuestas:
En el archivo .service en la sección [Unidad]:
La parte importante es la
mongodb.service
La página de manual lo describe, sin embargo, debido al formato, no es tan claro a primera vista
systemd.unit - bien formateado
systemd.unit - no tan bien formateado
fuente
After=
La dependencia solo es efectiva cuando el servicio incluidoAfter=
y el servicio incluido porAfter=
están programados para iniciarse como parte de su arranque.Ex:
De esta manera, si ambos
a.service
yb.service
están habilitados , systemd ordenaráb.service
despuésa.service
.Si no lo entiendo mal, lo que está preguntando es cómo comenzar
b.service
cuandoa.service
comienza aunqueb.service
no esté habilitado.La directiva para esto es
Wants=
oRequires=
menos[Unit]
.La diferencia entre
Wants=
yRequires=
es que conRequires=
, si no se iniciab.service
, el inicio dea.service
de fallará, mientras que conWants=
,a.service
se iniciará incluso sib.service
falla. Esto se explica en detalle en la página de manual de.unit
.fuente
After=website.service
significa "ejecutar mi unidad después de website.service!". Eso es lo que se explica en los documentos: "Después = asegura que la unidad configurada se inicia después de que la unidad listada terminó de iniciarse" . Supongo que las "unidades enumeradas" son unidades en el lado derecho de "Después =".swap(a, b)