GNU/Linux >> Znalost Linux >  >> Linux

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

Řešení 1:

Použijte systemctl edit smb.service pro aktualizaci závislostí.

After=dirsrv.target - Zajistí spuštění služby smb.service po dirsrv.target.

Pro robustnost (která bude stát za to, pokud si s tím pohráváte) můžete také zahrnout některé z následujících:

Requires=dirsrv.target - Aktivovat dirsrv.target, když je aktivována smb.service. Způsobí selhání služby smb.service, pokud selže dirsrv.target.

Wants=dirsrv.target - Aktivovat dirsrv.target, když je aktivována smb.service. Nezpůsobí selhání smb.service, pokud selže dirsrv.target.

BindsTo=dirsrv.target - Pokud je dirsrv.target deaktivován, deaktivujte smb.service.

Zdroj:http://www.freedesktop.org/software/systemd/man/systemd.unit.html

systemd-ui poskytuje GUI pro systemd. Poskytuje dobrý přehled o stavu systemd, ale k úpravě souborů jednotek budete stále muset použít textový editor.

Řešení 2:

Udělejte dvě věci:

  1. Upravte /lib/systemd/system/smb.service unit file, k určení závislosti. [unit] sekce obsahuje After= řádek, který určuje, jaké služby/cíle by měly být dosaženy před tímto.

    After=syslog.target network.target nmb.service winbind.service
    

    Změňte jej na:

    After=dirsrv.target syslog.target network.target nmb.service winbind.service
    
  2. Nahlaste tuto závislost zpět Fedoře jako chybu, aby mohla být začleněna do budoucích verzí.

Řešení 3:

možná budete muset změnit nebo zahrnout řádek s Requires direktivě [Unit] části /usr/lib/systemd/system/smb.service soubor.

Requires=dirsrv.target

a

After=dirsrv.target

Řešení 4:

Existují dvě alternativy k úpravě souboru služby v /usr/lib/systemd/system (viz příklad 2. Přepsání nastavení dodavatele):

  1. Zkopírujte soubor do /etc/systemd/system a proveďte úpravy na kopii. Tento soubor zcela přepíše soubor v /usr/lib .

  2. Vytvořte soubor /etc/systemd/system/smb.service.d/local.conf . Obsah souboru by měl být podobný příkladu níže. To selektivně přepíše možnosti „Vyžaduje“ a „Po“ v souboru služby poskytované dodavatelem.

Každý z nich (včetně úpravy souboru v /usr/lib ) nabízí výhody i nevýhody. Nejlepší volba může záviset na službě a povaze úprav.

I když to může fungovat, nestačí přidat pouze možnost „Po“ (viz část [Jednotka] Možnosti). "Po" řídí pořadí, ale ne závislosti. Pokud dirsrv.target není spuštěn jiným způsobem, zadáním příkazu se nespustí. Použití možnosti "Vyžaduje" nebo "Chce" vynutí dirsrv.target začít.

[Unit]
Requires=dirsrv.target
After=dirsrv.target

Pozn.:Nevím, zda byl tento přístup k dispozici, když byla tato otázka původně položena.


Linux
  1. Přidání nové služby do Linux systemd

  2. Negrafické spouštění pomocí Systemd?

  3. Proč většina příkladů Systemd obsahuje Wantedby=multi-user.target?

  1. Jak ladit proces spouštění systemd v CentOS/RHEL 7 a 8

  2. Jak ladit proces spouštění systemd v CentOS/RHEL 7 a 8

  3. Systemd:Použití After a Requires

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

  2. Zajistěte, aby uživatelská služba systemd závisela na systémovém cíli

  3. Jak spustit skript s systemd těsně před vypnutím?