Dienststartprobleme nach Neustart
Diagnose und Behebung von Dienststartproblemen nach Server-Neustart: systemctl, fehlgeschlagene Dienste, Boot-Log-Analyse und systemd-Konfiguration.
Inhaltsverzeichnis
Einführung
Nach einem Server-Neustart starten einige Dienste möglicherweise nicht automatisch, was zu Ausfallzeiten führt. Diese Anleitung behandelt die Diagnose und Behebung von Dienststartproblemen nach einem Neustart.
Fehlgeschlagene Dienste prüfen
# Alle fehlgeschlagenen Dienste auflisten
sudo systemctl list-units --type=service --state=failed
# Status eines bestimmten Dienstes prüfen
sudo systemctl status DIENST_NAME
# Alle Dienste und ihre Zustände anzeigen
sudo systemctl list-units --type=service --all
Boot-Logs lesen
# Aktuelle Boot-Logs anzeigen
journalctl -b
# Vorherige Boot-Logs anzeigen
journalctl -b -1
# Nach Dienst filtern
journalctl -b -u DIENST_NAME
# Nur Fehler anzeigen
journalctl -b -p err
# Boot-Zeit-Analyse
systemd-analyze
# Dienst-Startzeiten
systemd-analyze blame
# Kritische Kette
systemd-analyze critical-chain
systemd-analyze blame zeigt, welche Dienste am längsten zum Starten brauchten.
Dienste für Auto-Start aktivieren
# Dienst beim Boot aktivieren
sudo systemctl enable DIENST_NAME
# Aktivieren und sofort starten
sudo systemctl enable --now DIENST_NAME
# Prüfen ob Dienst aktiviert ist
systemctl is-enabled DIENST_NAME
# Alle aktivierten Dienste auflisten
systemctl list-unit-files --type=service --state=enabled
Häufig zu aktivierende Dienste
sudo systemctl enable ssh
sudo systemctl enable nginx
sudo systemctl enable apache2
sudo systemctl enable mysql
sudo systemctl enable docker
sudo systemctl enable fail2ban
Dienstabhängigkeiten
# Dienstabhängigkeiten anzeigen
systemctl list-dependencies DIENST_NAME
# Umgekehrte Abhängigkeiten
systemctl list-dependencies --reverse DIENST_NAME
# Dienst-Unit-Datei anzeigen
systemctl cat DIENST_NAME
Abhängigkeiten in Unit-Dateien konfigurieren
[Unit]
Description=Meine Anwendung
After=network.target mysql.service
Requires=mysql.service
Wants=redis.service
[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/start.sh
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Wichtige Direktiven:
- After=: Nach diesen Units starten
- Requires=: Harte Abhängigkeit
- Wants=: Weiche Abhängigkeit
- Before=: Vor diesen Units starten
Boot-Reihenfolge-Analyse
systemd-analyze time
systemd-analyze blame | head -20
systemd-analyze critical-chain
systemd-analyze plot > boot-chart.svg
Wenn die Boot-Zeit zu lang ist, deaktivieren Sie unnötige Dienste mit sudo systemctl disable DIENST_NAME.
Benutzerdefinierten Systemd-Dienst erstellen
# /etc/systemd/system/myapp.service
[Unit]
Description=Benutzerdefinierte Anwendung
After=network.target
[Service]
Type=simple
User=appuser
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/bin/start
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now myapp
sudo systemctl status myapp
Häufige Probleme beheben
Dienst schlägt mit Exit-Code fehl
journalctl -u DIENST_NAME -n 50 --no-pager
systemctl cat DIENST_NAME
ls -la /pfad/zum/binary
Dienst startet zu früh
[Unit]
After=network-online.target
Wants=network-online.target
Dienst startet ständig neu
systemctl show DIENST_NAME -p NRestarts
journalctl -u DIENST_NAME --since "5 minutes ago"
sudo systemctl stop DIENST_NAME
sudo systemctl reset-failed DIENST_NAME
Fazit
Dienststartprobleme nach Neustart sind häufig, aber leicht vermeidbar. Stellen Sie sicher, dass kritische Dienste mit systemctl enable aktiviert sind, konfigurieren Sie korrekte Abhängigkeiten und prüfen Sie regelmäßig Boot-Logs auf Fehler.
Verwandte Artikel
SSH-Verbindungsproblem: Keine Verbindung zum Server möglich
Anleitung zur Behebung von SSH-Verbindungsproblemen: Path.net Firewall-Regeln, Default Block, Filterregel für SSH-Port erstellen und Fehlerbehebungsschritte.
RDP-Verbindungsproblem: Keine Verbindung zu Windows Server
Anleitung zur Behebung von RDP-Verbindungsproblemen: Path.net Firewall-Regeln, Default Block, Filterregel für RDP-Port erstellen und Fehlerbehebungsschritte.
MTR-Test durchführen und Ergebnisse an Support senden
Anleitung zum Netzwerktest mit WinMTR und Linux MTR, ICMP-Filterregel erstellen und Ergebnisse an das Support-Team senden. Paketverlust und Latenz diagnostizieren.