Mam ogólne pytanie. Jak można uruchomić jednostkę systemową *.service
po *.service
pomyślnym uruchomieniu określonego elementu ?
Bardziej szczegółowe pytanie brzmi: jak mam zacząć website.service
dopiero po mongodb.service
rozpoczęciu? Innymi słowy, website.service
powinno polegać na mongodb.service
.
Odpowiedzi:
W pliku .service w sekcji [Jednostka]:
Ważną częścią jest
mongodb.service
Strona podręcznika opisuje to jednak ze względu na formatowanie nie jest tak jasne na pierwszy rzut oka
systemd.unit - dobrze sformatowany
systemd.unit - niezbyt dobrze sformatowany
źródło
After=
zależność jest skuteczna tylko wtedy, gdy usługa obejmująca usługiAfter=
i usługa uwzględniona przezAfter=
są zaplanowane jako część rozruchu.Dawny:
W ten sposób, jeśli oba
a.service
ib.service
są włączone , systemd złoży kolejnośćb.service
poa.service
.Jeśli się nie mylę, pytasz, jak zacząć,
b.service
gdya.service
uruchamia się, mimo żeb.service
nie jest włączony.Dyrektywa w tym zakresie jest
Wants=
lubRequires=
pod[Unit]
.Różnica pomiędzy
Wants=
iRequires=
jest to, że zRequires=
, awaria zacząćb.service
spowoduje uruchomieniea.service
się niepowodzeniem, natomiast zWants=
,a.service
rozpocznie nawet jeślib.service
nie powiedzie się. Jest to szczegółowo wyjaśnione na stronie podręcznika systemowego.unit
.źródło
After=website.service
oznacza „wykonaj moją jednostkę po witrynie.serwis!”. To jest wyjaśnione w dokumentacji: „After = zapewnia, że skonfigurowana jednostka zostanie uruchomiona po zakończeniu uruchamiania wymienionej jednostki” . Zakładam, że „wymienione jednostki” to jednostki po prawej stronie „After =”.swap(a, b)