Lösung 1:
Das klingt sehr nach Runlevels , ersetzt durch Ziele in Systemd. Anstatt also ein Skript zu schreiben, das eine Liste von Diensten startet und stoppt, könnten Sie einen neuen maintenance.target
erstellen enthält nur die notwendigen Dienste, wie SSH. Natürlich ist SSH ohne Netzwerk nicht sehr sinnvoll, also in diesem Beispiel einfach emergency-net.target
wurde geändert, um SSH einzuschließen.
[Unit]
Description=Maintenance Mode with Networking and SSH
Requires=maintenance.target systemd-networkd.service sshd.service
After=maintenance.target systemd-networkd.service sshd.service
AllowIsolate=yes
Dann können Sie mit
in Ihren Wartungsmodus wechseln# systemctl isolate maintenance.target
und zurück
# systemctl isolate multi-user.target
Lösung 2:
Listen Sie zuerst Ihre Dienste auf und suchen Sie nach den entsprechenden systemd-Namen.
Erstellen Sie dann eine Liste und stoppen Sie jedes Listenmitglied, um in die Wartung einzutreten, und starten Sie jedes Mitglied nach der Wartung.