Systemd Dienstverwaltung: start, stop, enable Anleitung
Vollständige Anleitung zu systemctl-Befehlen, Service-Unit-Dateien, benutzerdefinierten Diensten, journalctl-Protokollüberwachung und systemd-Fehlerbehebung auf Linux-Servern.
Inhaltsverzeichnis
Systemd Dienstverwaltung: start, stop, enable Anleitung
Systemd ist das Init-System und der Dienst-Manager, der von den meisten modernen Linux-Distributionen verwendet wird. Auf Ubuntu, Debian, CentOS, AlmaLinux und RHEL übernimmt systemd alles vom Systemstart bis zur Dienstverwaltung. Diese Anleitung behandelt systemctl-Befehle, Unit-Dateien und die Erstellung benutzerdefinierter Dienste.
Was ist Systemd?
Systemd ist der erste Prozess, der nach dem Linux-Kernel gestartet wird (PID 1). Seine Aufgaben umfassen:
- Starten und Stoppen von Systemdiensten
- Verwalten von Abhängigkeiten zwischen Diensten
- Sammeln von Systemprotokollen (journald)
- Überwachen des Systemzustands
Systemd hat das ältere SysV-Init-System ersetzt. Obwohl /etc/init.d/-Skripte noch funktionieren, sind systemd-Unit-Dateien jetzt der bevorzugte Ansatz.
Grundlegende systemctl-Befehle
Dienststatus prüfen
# Dienststatus anzeigen
sudo systemctl status nginx
# Prüfen ob Dienst läuft
sudo systemctl is-active nginx
# Prüfen ob Dienst aktiviert ist
sudo systemctl is-enabled nginx
# Alle laufenden Dienste auflisten
sudo systemctl list-units --type=service --state=running
# Fehlgeschlagene Dienste auflisten
sudo systemctl list-units --type=service --state=failed
Dienste starten und stoppen
# Dienst starten
sudo systemctl start nginx
# Dienst stoppen
sudo systemctl stop nginx
# Dienst neu starten (stoppen + starten)
sudo systemctl restart nginx
# Dienstkonfiguration neu laden ohne zu stoppen
sudo systemctl reload nginx
# Neu laden wenn möglich, sonst neu starten
sudo systemctl reload-or-restart nginx
Dienste aktivieren und deaktivieren
# Dienst beim Systemstart aktivieren
sudo systemctl enable nginx
# Dienst starten und beim Boot aktivieren
sudo systemctl enable --now nginx
# Automatischen Start deaktivieren
sudo systemctl disable nginx
# Dienst stoppen und deaktivieren
sudo systemctl disable --now nginx
# Dienst maskieren (verhindert Start)
sudo systemctl mask nginx
# Maskierung aufheben
sudo systemctl unmask nginx
Systemd Unit-Dateien
Unit-Dateien definieren, wie systemd Dienste verwaltet. Es gibt zwei Hauptspeicherorte:
/lib/systemd/system/— Vom Paketmanager installierte Unit-Dateien/etc/systemd/system/— Vom Systemadministrator erstellte/angepasste Unit-Dateien
# Unit-Datei eines Dienstes anzeigen
sudo systemctl cat nginx
# Speicherort der Unit-Datei finden
sudo systemctl show nginx --property=FragmentPath
# Alle Unit-Dateien auflisten
sudo systemctl list-unit-files --type=service
Unit-Datei-Struktur
Eine .service-Unit-Datei hat drei Hauptabschnitte:
[Unit]
Description=Nginx HTTP Server
After=network.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Benutzerdefinierten Dienst erstellen
Beispiel: Node.js-Anwendungsdienst
# Unit-Datei erstellen
sudo nano /etc/systemd/system/myapp.service
[Unit]
Description=My Node.js Application
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node /var/www/myapp/app.js
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
Environment=NODE_ENV=production
Environment=PORT=3000
[Install]
WantedBy=multi-user.target
# Systemd über neue Unit-Datei informieren
sudo systemctl daemon-reload
# Dienst starten und aktivieren
sudo systemctl enable --now myapp
# Status prüfen
sudo systemctl status myapp
Protokollverwaltung mit journalctl
# Protokolle eines bestimmten Dienstes anzeigen
sudo journalctl -u nginx
# Letzte 50 Zeilen anzeigen
sudo journalctl -u nginx -n 50
# Protokolle in Echtzeit verfolgen
sudo journalctl -u nginx -f
# Protokolle der letzten Stunde
sudo journalctl -u nginx --since "1 hour ago"
# Nur Fehlerprotokolle
sudo journalctl -u nginx -p err
# Protokoll-Speicherplatz prüfen
sudo journalctl --disk-usage
# Alte Protokolle bereinigen
sudo journalctl --vacuum-time=2weeks
Fehlerbehebung
Dienst startet nicht
# Detaillierten Status abrufen
sudo systemctl status myapp -l
# Aktuelle Protokolle prüfen
sudo journalctl -u myapp -n 100 --no-pager
# Unit-Datei validieren
sudo systemd-analyze verify /etc/systemd/system/myapp.service
daemon-reload vergessen
# Immer nach dem Ändern einer Unit-Datei ausführen
sudo systemctl daemon-reload
Beginnen Sie bei der Entwicklung eines Dienstes mit Type=simple und Restart=on-failure. Optimieren Sie andere Einstellungen, sobald der Dienst stabil ist.
Systemd Timer (Cron-Alternative)
[Unit]
Description=Daily Backup Timer
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
# Timer aktivieren
sudo systemctl enable --now backup.timer
# Alle Timer auflisten
sudo systemctl list-timers
Fazit
Systemd ist der Grundstein der modernen Linux-Serververwaltung. Das Erlernen von systemctl-Befehlen und der Unit-Datei-Struktur ermöglicht eine zuverlässige Dienstverwaltung. Auf REXE-Servern können Sie benutzerdefinierte Dienste erstellen, damit Ihre Anwendungen nach Systemneustarts automatisch starten.
Verwandte Artikel
VDS-Server per SSH verbinden: PuTTY, Terminal & Schlüssel
SSH-Verbindung zum Linux VDS-Server: PuTTY, Terminal, schlüsselbasierte Authentifizierung, Path Panel Firewall-Regel und Sicherheitstipps für Einsteiger.
Windows VDS per RDP verbinden: Vollständige Anleitung
Schritt-für-Schritt-Anleitung zur RDP-Verbindung mit Windows Server VDS: Einrichtung, NLA-Sicherheit, Path Panel Firewall-Regel und Fehlerbehebung.
VDS-Server Betriebssystem wechseln: Schritt-für-Schritt
Betriebssystemwechsel am VDS-Server über das REXE-Panel: Backup-Tipps, unterstützte Linux-Distributionen und Windows Server Versionen im Überblick.