Tengo una pregunta general. ¿Cómo se inicia una unidad systemd *.servicedespués de que una en particular se *.servicehaya iniciado con éxito?
La pregunta más específica es, ¿cómo empiezo website.servicesolo después de que mongodb.serviceha comenzado? En otras palabras, website.servicedebería depender de mongodb.service.

Respuestas:
En el archivo .service en la sección [Unidad]:
La parte importante es la
mongodb.serviceLa 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.serviceyb.serviceestán habilitados , systemd ordenaráb.servicedespuésa.service.Si no lo entiendo mal, lo que está preguntando es cómo comenzar
b.servicecuandoa.servicecomienza aunqueb.serviceno 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.servicede fallará, mientras que conWants=,a.servicese iniciará incluso sib.servicefalla. Esto se explica en detalle en la página de manual de.unit.fuente
After=website.servicesignifica "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)