Wie man Dienste mit systemctl auf einem Linux-VPS verwaltet

systemctl ist das Hauptwerkzeug zur Verwaltung von Diensten auf den meisten modernen Linux-VPS-Distributionen. Es steuert Dienste, die von systemd verwaltet werden, einschließlich Webservern, Datenbanken, Bots, Spielserver-Daemons, Überwachungstools und benutzerdefinierten Diensten, die Sie selbst erstellen.

In den folgenden Beispielen ersetzen Sie nginx durch den Dienst, den Sie verwalten. Häufige Dienstnamen sind nginx, apache2, mariadb, mysql, docker, sshd und benutzerdefinierte Namen wie arkserver oder discordbot.

 

Einen Dienst überprüfen

Verwenden Sie status, bevor Sie einen Dienst neu starten. Es zeigt an, ob der Dienst läuft, ob er beim Booten aktiviert ist und gibt aktuelle Fehlermeldungen aus.

sudo systemctl status nginx

Der untenstehende Screenshot verwendet den SSH-Dienst als Beispiel; das gleiche Ausgabelayout gilt für andere systemd-Dienste.

Ubuntu VPS Terminal zeigt systemctl Statusausgabe für den SSH-Dienst

Wenn die Ausgabe failed anzeigt, lesen Sie die Fehlermeldungen, bevor Sie den Dienst wiederholt neu starten.

Sie können auch Protokolle mit journalctl anzeigen:

sudo journalctl -u nginx --since "30 minutes ago"

Verfolgen Sie Live-Protokolle, während Sie den Dienst neu starten oder testen:

sudo journalctl -u nginx -f

 

Starten, stoppen, neu starten und neu laden

BefehlWas er macht
sudo systemctl start nginxStartet einen gestoppten Dienst.
sudo systemctl stop nginxStoppt einen laufenden Dienst.
sudo systemctl restart nginxStoppt und startet den Dienst erneut.
sudo systemctl reload nginxLädt die Konfiguration neu, ohne einen vollständigen Neustart, wenn der Dienst Neuladungen unterstützt.
sudo systemctl reload-or-restart nginxLädt neu, wenn möglich, ansonsten startet er neu.

Verwenden Sie reload, wenn Sie nur eine Konfigurationsdatei geändert haben und der Dienst dies unterstützt. Verwenden Sie restart, wenn die Anwendung einen vollständigen Stopp/Start benötigt, um Änderungen zu übernehmen.

 

Start beim Booten aktivieren oder deaktivieren

Das Starten eines Dienstes jetzt und das Aktivieren beim Booten sind unterschiedliche Aktionen. Wenn Sie möchten, dass ein Dienst nach einem VPS-Neustart wiederkommt, aktivieren Sie ihn.

sudo systemctl enable nginx
sudo systemctl start nginx

Um ihn in einem Befehl zu aktivieren und zu starten:

sudo systemctl enable --now nginx

Um zu verhindern, dass er automatisch beim Booten startet:

sudo systemctl disable nginx

 

Mehrere Dienste neu starten

Sie können vielen systemctl-Befehlen mehr als einen Dienstnamen übergeben:

sudo systemctl restart nginx php8.2-fpm mariadb

Dies ist nützlich, nachdem Sie einen Stack geändert haben, bei dem mehrere Dienste voneinander abhängen, wie ein Webserver, PHP-FPM und eine Datenbank.

 

Verwendung von Wildcards

systemctl kann Dienstnamen mit Wildcards abgleichen. Dies ist nützlich, aber verwenden Sie es vorsichtig, da es mehr Dienste betreffen kann, als Sie beabsichtigt haben.

Zum Beispiel zeigt dies alle passenden PHP-FPM-Dienste:

systemctl list-units 'php*-fpm.service'

Nachdem Sie die Übereinstimmungen überprüft haben, können Sie passende Dienste neu starten:

sudo systemctl restart 'php*-fpm.service'

Listen Sie immer zuerst die Übereinstimmungen auf, bevor Sie einen Platzhalter mit restart, stop oder disable verwenden.

 

Einen benutzerdefinierten Dienst erstellen

Sie können einen benutzerdefinierten systemd-Dienst für einen Spielserver, Bot oder Skript erstellen, damit er beim Booten startet und mit systemctl verwaltet werden kann.

Erstellen Sie eine Unit-Datei in /etc/systemd/system/:

sudo nano /etc/systemd/system/myserver.service

Eine einfache Dienstdatei sieht so aus:

[Unit]
Description=Mein benutzerdefinierter Server
After=network.target

[Service]
Type=simple
User=myuser
WorkingDirectory=/home/myuser/myserver
ExecStart=/home/myuser/myserver/start.sh
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Nach dem Erstellen oder Ändern einer Dienstdatei laden Sie systemd neu, damit es die neue Unit erkennt:

sudo systemctl daemon-reload

Aktivieren und starten Sie es dann:

sudo systemctl enable --now myserver

Überprüfen Sie es mit:

sudo systemctl status myserver
sudo journalctl -u myserver -f

Wenn der Dienst fehlschlägt, überprüfen Sie den Pfad in ExecStart, den User, die Dateiberechtigungen und ob das Startskript manuell ausgeführt wird, bevor Sie versuchen, es über systemd auszuführen.

  • 0 Benutzer fanden dies hilfreich
War diese Antwort hilfreich?

Mehr zum Thema

Wie man sich mit SSH zu einem Linux VPS verbindet

SSH ist die übliche Methode, um einen Linux VPS zu verwalten. Es bietet Ihnen ein Terminal auf...

Wie man Pakete auf einem Linux-VPS aktualisiert

Das Aktualisieren von Paketen hilft, Sicherheitsprobleme zu beheben und Server-Tools kompatibel...

Wie man einen Sudo-Benutzer auf einem Linux-VPS erstellt

Ein Sudo-Benutzer ermöglicht es Ihnen, einen Linux-VPS zu verwalten, ohne sich für jede Aufgabe...

Wie man SSH auf einem Linux-VPS sichert

SSH ist der Hauptweg, um einen Linux-VPS zu verwalten, daher sollte es gesichert werden, bevor...

Wie man die Festplattennutzung auf einem Linux-VPS überprüft

Probleme mit der Festplattennutzung können verhindern, dass Updates, Backups, Logs, Datenbanken...