Ubuntu 26.04 / Dienstkonfiguration mit Validierung und Drop-ins ändern
Ändern Sie die Dienstkonfiguration, indem Sie den ursprünglichen und den aktuellen Zustand aufzeichnen, eine separate Überschreibung einführen, diese validieren und das tatsächliche Verhalten überprüfen. Systemd-Einheiten neu laden, Anwendungskonfigurationen neu laden und einen Prozess neu starten sind unterschiedliche Vorgänge.
Lokalisieren Sie die ursprüngliche Einheit und Drop-Ins.
Identifizieren Sie die tatsächliche Einheit und inspizieren Sie sie mit systemctl cat und systemctl show -p FragmentPath -p DropInPaths. Direkte Änderungen an paketierten Einheiten unter /usr/lib/systemd/system können während Updates ersetzt werden; legen Sie lokale Anpassungen getrennt unter /etc/systemd/system an.
Erstellen Sie einen unabhängigen Labor-Dienst
Dieses dedizierte VM-Labor lässt echte Serveranwendungen unberührt. Wenn ubuntu-course-lab.service existiert, wählen Sie konsequent einen anderen Namen. Noclobber verhindert das Überschreiben der bestehenden Datei; stoppen Sie, wenn die Erstellung fehlschlägt.
(
set -eu
sudo sh -c 'set -C; cat > /etc/systemd/system/ubuntu-course-lab.service' <<'EOF'
[Unit]
Description=Ubuntu course configuration lab
[Service]
Type=oneshot
Environment=LAB_MODE=baseline
ExecStart=/usr/bin/printenv LAB_MODE
EOF
sudo systemd-analyze verify /etc/systemd/system/ubuntu-course-lab.service
sudo systemctl daemon-reload
sudo systemctl start ubuntu-course-lab.service
journalctl -u ubuntu-course-lab.service --since '5 minutes ago' --no-pager
)
Prüfen Sie den ausgegebenen Wert baseline im Journal und ein erfolgreiches Ergebnis. Eine Type=oneshot-Einheit kann nach erfolgreichem Abschluss inaktiv werden; allein Inaktivität ist kein Fehler. Untersuchen Sie auch systemctl show ubuntu-course-lab.service -p Result.
Ändern Sie einen Wert über ein Drop-in.
(
set -eu
sudo mkdir -p /etc/systemd/system/ubuntu-course-lab.service.d
sudo sh -c 'set -C; cat > /etc/systemd/system/ubuntu-course-lab.service.d/10-lab.conf' <<'EOF'
[Service]
Environment=LAB_MODE=changed
EOF
sudo systemd-analyze verify /etc/systemd/system/ubuntu-course-lab.service
sudo systemctl daemon-reload
sudo systemctl start ubuntu-course-lab.service
journalctl -u ubuntu-course-lab.service --since '5 minutes ago' --no-pager
)
Lassen Sie den Original-Wert der Einheit unverändert und überschreiben Sie ihn im Drop-in mit changed. Vergleichen Sie die zusammengeführte Konfiguration und das neue Ausführungsprotokoll. Die Überprüfung der Einheit validiert nicht jede anwendungsspezifische Einstellung, Dateizugriff oder Netzwerkreaktion.
Unterscheiden Sie drei Neuladungsvorgänge.
| Befehl | Rolle |
|---|---|
| systemctl daemon-reload | Lädt die systemd-Units und Abhängigkeitsdefinitionen neu |
| systemctl reload unit | Führt den vom Anwendungsprogramm unterstützten Reload-Vorgang aus |
| systemctl restart unit | Stoppt und startet den Prozess |
Zum Beispiel kann die Nginx-Konfiguration mit nginx -t vor dem unterstützten Reload validiert werden. Allein das Neuladen von systemd ändert die Umgebung eines vorhandenen Prozesses nicht. Wählen Sie den Anwendungs-Vorgang nach Prüfung von Ausfallzeiten und Tests mit neuen Verbindungen.
Die systemd.unit-Referenz erklärt die Pfade zur Unitsuche und die Priorität von Drop-ins.
Nur diese Änderung rückgängig machen
(
set -eu
sudo rm -- /etc/systemd/system/ubuntu-course-lab.service.d/10-lab.conf
sudo systemctl daemon-reload
sudo systemctl start ubuntu-course-lab.service
journalctl -u ubuntu-course-lab.service --since '5 minutes ago' --no-pager
)
Bestätigen Sie, dass wieder baseline ausgegeben wird. Dieses rm entfernt nur das eigens für die Übung erstellte Drop-in. Vermeiden Sie ein umfassendes systemctl-Revert, das auch Änderungen eines anderen Administrators entfernt. Um die Unit selbst aufzuräumen, überprüfen Sie deren Eigentum und inaktiven Zustand, entfernen Sie nur diese Labor-Datei und laden Sie systemd neu.




