GNU/Linux >> Znalost Linux >  >> Linux

Systemd:Použití After a Requires

I když je Umutova odpověď správná, existuje interakce mezi Requires= a After= to se málokdy píše. From systemd.unit#Requires=(důraz je můj):

Pokud bude tato jednotka aktivována, budou aktivovány i uvedené jednotky. Pokud se některá z dalších jednotek neaktivuje, a závislost na objednávce After= na vadné jednotce je nastaven , tato jednotka se nespustí.

V podstatě to znamená, že bez After= , obě služby budou spuštěny, pokud foo.service je spuštěno (kvůli Requires= ), ale systemd nezastaví foo.service pokud bar.service nespustí úspěšně.

Nicméně s přidaným After= , bude čekat na bar.service úspěšně spustit (až na některé výjimky; viz poznámka v Requires= docs), než začne foo.service a nespustí jej, pokud bar.service nespustí se.

Poněkud související je rozdíl mezi Requires= a BindsTo= (viz dokumenty kolem odkazu výše).


Je naprosto v pořádku použít obě After= a Requires= . Mají různé účely. Requires= nastaví závislost spuštění. systemd zajišťuje, že pokud se jakýkoli subjekt pokouší spustit foo.service, měl by také spustit bar.service. Pokud bar.service v určitém okamžiku selže, pak je také zrušena služba foo.service.

After= zadává startovací příkaz mezi službami. Pokud je naplánováno spuštění obou služeb, pak After= zajistí, že je nastaveno počáteční pořadí.

Jako příklad se můžete podívat na vlastní servisní soubor systemd.

/lib/systemd/system/basic.target
[Unit]
...
Requires=sysinit.target
After=sysinit.target
...

Linux
  1. Centos – Systemd ukončí službu ihned po spuštění?

  2. Debian – Systemd:Služba postrádá nastavení Execstart=i Execstop=. Odmítnout?

  3. systemd:SIGTERM ihned po startu

  1. systemctl zastaví službu Tomcat ihned po spuštění

  2. Systém odmítá SSH a po instalaci systemd se zasekl při 'bootování'

  3. Systemd Unit File - WantedBy a After

  1. Spuštění, zastavení a restartování služeb na systémovém serveru RHEL 7 Linux

  2. Upstart:spuštění služby po procesu, který není spuštěn

  3. Závislosti Systemd a pořadí spouštění