Ich verwende eine Minimalinstallation von CentOS8 (8.1.1911) zum Betrieb eines Webservers.
Einige Dienste /etc/systemd/system/multi-user.target.wants/
wie
httpd.service
mariadb.service
named.service
squid.service
sshd.service
postfix.service
nur haben After=network.target
und nicht network-online.target
.
Dies ist ein Problem, da diese Dienste beim Systemstart gestartet werden, bevor das Netzwerk bereit ist, und sich nicht an die Abhörports binden lassen. Glücklicherweise sshd
versuchen einige Dienste die Bindung immer wieder und sobald das Netzwerk online ist, gelingt dies. Sie können fehlgeschlagene Bindungsversuche sehen, /var/log/messages
bevor sie schließlich erfolgreich sind. Allerdings werden nicht alle Dienste einen erneuten Versuch unternehmen und bleiben nach dem ersten Fehlschlag tot.
Ich weiß, dass eine Lösung darin besteht, benutzerdefinierte Parameter für Wants
/ After
auf jedem Dienst hinzuzufügen systemctl
, d. h. auszuführen
systemctl edit httpd
und füge hinzu
[Unit]
Wants=network-online.target
After=network-online.target
Dies funktioniert. Die Dienste warten jetzt, bis das Netzwerk online ist und werden beim Neustart erfolgreich gebunden und gestartet.
Nun zu meiner Frage.
Ich möchte nicht jeden hinzuzufügenden Dienst manuell bearbeiten, network-online.target
da dies zu Wartungsproblemen führt und die Möglichkeit besteht, dass dieser Schritt bei zukünftigen neuen Diensten vergessen wird. Ich möchte eine Möglichkeit, eine Richtlinie festzulegen oder eine systemweite Änderung vorzunehmen, sodass sich jeder Dienst mit einem Wants
/ After
für network.target
so verhält, als ob er auf wartet network-online.target
.
- Wird dies ein Problem verursachen, da
NetworkManager
auch auf gewartet wirdnetwork.target
? KönnteNetworkManager
geändert werden, um auf etwas anderes zu warten? - Gibt es noch andere Dienste, die möglicherweise nicht mehr funktionieren, wenn alle
network.target
darauf wartennetwork-online.target
? - Irgendwelche anderen kreativen Lösungen?