Systeemservice starten na specifieke service?

Ik heb een algemene vraag. Hoe start men een systemd unit *.servicenadat een bepaalde *.servicesuccesvol is gestart?

Een specifiekere vraag is: hoe start ik website.servicepas nadat mongodb.serviceis gestart? Met andere woorden website.servicemoet afhankelijk zijn van mongodb.service.


Antwoord 1, autoriteit 100%

In het .service-bestand onder de sectie [Eenheid]:

[Unit]
Description=My Website
After=syslog.target network.target mongodb.service

Het belangrijkste onderdeel is de mongodb.service

De manpagina beschrijft het echter vanwege de opmaak is het op het eerste gezicht niet zo duidelijk

systemd.unit – goed geformatteerd

systemd.unit – niet zo goed geformatteerd


Antwoord 2, autoriteit 41%

After=-afhankelijkheid is alleen effectief als service inclusief After=en service inclusief After=beide zijn gepland om te starten als onderdeel van uw opstarten.

Bijvoorbeeld:

a.service
[Unit]
After=b.service

Op deze manier, als zowel a.serviceals b.serviceingeschakeldzijn, zal systemd b.servicena a.service.

Als ik het niet verkeerd begrijp, is wat u vraagt ​​hoe u b.servicestart wanneer a.servicestart, ook al is b.serviceis niet ingeschakeld.

De instructie hiervoor is Wants=of Requires=onder [Unit].

website.service
[Unit]
Wants=mongodb.service
After=mongodb.service

Het verschil tussen Wants=en Requires=is dat met Requires=het niet starten van b.servicezorgt ervoor dat het opstarten van a.servicemislukt, terwijl bij Wants=a.servicezelfs als b.servicemislukt. Dit wordt in detail uitgelegd op de man-pagina van .unit.

Other episodes