GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Systemd-Abhängigkeiten und Startreihenfolge

Lösung 1:

Verwenden Sie systemctl edit smb.service um die Abhängigkeiten zu aktualisieren.

After=dirsrv.target - Stellt sicher, dass der smb.service nach dirsrv.target gestartet wird.

Für Robustheit (was sich lohnen wird, wenn Sie an diesem Zeug basteln) möchten Sie vielleicht auch einige der folgenden einschließen:

Requires=dirsrv.target - dirsrv.target aktivieren, wenn smb.service aktiviert ist. Wird dazu führen, dass smb.service fehlschlägt, wenn dirsrv.target fehlschlägt.

Wants=dirsrv.target - dirsrv.target aktivieren, wenn smb.service aktiviert ist. Wird smb.service nicht fehlschlagen lassen, wenn dirsrv.target fehlschlägt.

BindsTo=dirsrv.target - Wenn dirsrv.target deaktiviert ist, deaktivieren Sie smb.service.

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

systemd-ui bietet eine GUI für systemd. Gibt einen guten Überblick über den Zustand von systemd, aber Sie müssen immer noch einen Texteditor verwenden, um die Unit-Dateien zu ändern.

Lösung 2:

Tun Sie zwei Dinge:

  1. Bearbeiten Sie /lib/systemd/system/smb.service unit-Datei, um die Abhängigkeit anzugeben. Die [unit] Abschnitt enthält einen After= Zeile, die angibt, welche Dienste/Ziele vor diesem erreicht werden sollen.

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

    Ändern Sie es in:

    After=dirsrv.target syslog.target network.target nmb.service winbind.service
    
  2. Melden Sie diese Abhängigkeit als Fehler an Fedora zurück, damit sie in zukünftige Versionen integriert werden kann.

Lösung 3:

Sie müssen möglicherweise eine Zeile mit Requires ändern oder einfügen Direktive in [Unit] Abschnitt des /usr/lib/systemd/system/smb.service Datei.

Requires=dirsrv.target

und

After=dirsrv.target

Lösung 4:

Es gibt zwei Alternativen zum Ändern der Dienstdatei in /usr/lib/systemd/system (siehe Beispiel 2. Anbietereinstellungen überschreiben):

  1. Kopieren Sie die Datei nach /etc/systemd/system und führen Sie die Änderungen an der Kopie durch. Diese Datei überschreibt vollständig die Datei in /usr/lib .

  2. Erstellen Sie die Datei /etc/systemd/system/smb.service.d/local.conf . Der Inhalt der Datei sollte in etwa wie im folgenden Beispiel aussehen. Dies überschreibt selektiv die Optionen „Requires“ und „After“ in der vom Anbieter bereitgestellten Servicedatei.

Jede davon (einschließlich der Änderung der Datei in /usr/lib ) bietet Vor- und Nachteile. Die beste Wahl kann vom Dienst und der Art der Änderungen abhängen.

Auch wenn es funktionieren mag, reicht es nicht aus, nur die "After"-Option hinzuzufügen (siehe [Unit] Section Options). "After" steuert die Reihenfolge, aber keine Abhängigkeiten. Wenn dirsrv.target nicht auf andere Weise gestartet wird, wird sie durch die Angabe eines Auftrags nicht gestartet. Die Verwendung der Option „Requires“ oder „Wants“ erzwingt dirsrv.target gestartet werden.

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

NB:Ich weiß nicht, ob dieser Ansatz verfügbar war, als diese Frage ursprünglich gestellt wurde.


Linux
  1. Dienste auf systemd RHEL 7 Linux-Server starten, stoppen und neu starten

  2. So erstellen Sie einen Systemd-Dienst unter Linux

  3. Hinzufügen eines neuen Dienstes zu Linux systemd

  4. Nicht-grafischer Boot mit Systemd?

  5. Linux – Vbox-Dienste deaktivieren, um die Startzeit zu verkürzen?

Systemctl-Befehle zum Verwalten des Systemd-Dienstes

Jenkins mit Systemd und Docker installieren und ausführen

Wie ich gelernt habe, mir keine Sorgen mehr zu machen und systemd zu lieben

10 praktische systemd-Befehle:Eine Referenz

Verwalten von cgroups mit systemd

So zählen Sie die Anzahl der Dateien und Unterverzeichnisse in einem Verzeichnis