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:
-
Bearbeiten Sie
/lib/systemd/system/smb.service
unit-Datei, um die Abhängigkeit anzugeben. Die[unit]
Abschnitt enthält einenAfter=
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
-
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):
-
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
. -
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.