So zeigen Sie Linux-Dienste mit dem Befehl systemctl an
Die Verwaltung von Diensten unter Linux kann für Linux-Neulinge etwas ungewöhnlich sein, insbesondere da vieles davon abhängt, ob Dienste gestartet, gestoppt oder einfach nur überprüft werden. Manchmal verhalten sich Dienste nicht wie erwartet, daher ist es unerlässlich zu wissen, wie man sie mit systemctl auflistet und steuert. Dieser Leitfaden erklärt die wichtigsten Befehle und Tricks für einen reibungslosen Linux-Betrieb und bietet praxisnahe Tipps, die nicht einfach nur kopiert sind, sondern auf Erfahrung mit diesen Problemen beruhen.
Wie man Dienste mit systemctl verwaltet und Fehler behebt
Alle Dienste auflisten, um zu sehen, welche laufen und welche nicht.
Wenn Sie herausfinden möchten, welche Dienste auf Ihrem System geladen sind – vielleicht funktioniert etwas nicht richtig –, sollten Sie als Erstes alle Dienste auflisten. Führen Sie dazu folgenden Befehl in Ihrem Terminal aus:
sudo systemctl list-units --type=service
Dieser Befehl erzeugt eine Tabelle mit allen Diensten und Spalten wie UNIT, LOAD, ACTIVE, SUB und DESCRIPTION. Auf manchen Systemen kann die Tabelle etwas unübersichtlich wirken – Linux ist bekannt dafür, sehr ausführliche Informationen auszugeben. Die Spalte UNIT zeigt den Dateinamen an, z. B.„.example.com“ ssh.service, während der Status ACTIVE angibt, ob der Dienst ausgeführt wird oder nicht. Um alle Dienste, einschließlich inaktiver oder fehlgeschlagener Dienste, anzuzeigen, fügen Sie Folgendes hinzu --all:
sudo systemctl list-units --type=service --all
Das ist besonders hilfreich, wenn Sie einen Dienst suchen, von dem Sie vermuten, dass er nicht funktioniert oder beim Systemstart nicht aktiviert ist. Linux macht es einem natürlich etwas komplizierter, als einfach einen Schalter umzulegen, aber die Kenntnis dieser Befehle hilft Ihnen, einen Blick hinter die Kulissen zu werfen.
Prüfen Sie, welche Dienste aktiv oder inaktiv sind.
Besteht der Verdacht, dass ein bestimmter Dienst nicht läuft oder nicht ordnungsgemäß startet, sollte man ihn eingrenzen:
sudo systemctl list-units --type=service --state=active
Dadurch werden nur aktive (laufende) Dienste angezeigt. Umgekehrt können Sie mit folgendem Befehl sehen, welche Dienste gestoppt sind:
sudo systemctl list-units --type=service --state=inactive
Dies ist hilfreich, um Dienste zu identifizieren, die möglicherweise manuell neu gestartet werden müssen oder nicht beim Systemstart geladen werden. Apropos: Wenn ein Dienst inaktiv erscheint, aber eigentlich laufen sollte, müssen Sie ihn möglicherweise manuell starten.
Finden Sie ausgefallene Dienste – denn manchmal stellen sie einfach den Betrieb ein.
Wenn ein Dienst nicht funktioniert und zwar in der Liste angezeigt wird, aber den Status „Fehlgeschlagen“ hat, überprüfen Sie Folgendes:
sudo systemctl list-units --type=service --state=failed
Hier werden alle Dienste angezeigt, die nicht gestartet wurden oder abgestürzt sind. Das ist ein guter erster Schritt bei der Fehlersuche in ungewöhnlichen Fällen – denn egal wie oft man etwas blind neu startet, hier erfährt man, ob der Dienst tatsächlich defekt ist.
Sehen Sie, welche Dienste beim Systemstart gestartet werden.
Zu wissen, was beim Start aktiviert ist, kann später viel Ärger ersparen. Ausführen:
sudo systemctl list-unit-files --type=service --state=enabled
Diese Tabelle bietet Ihnen einen schnellen Überblick darüber, welche Dienste beim Systemstart ausgeführt werden. Dies kann hilfreich sein, wenn ein Dienst nicht startet, weil er deaktiviert oder ausgeblendet ist. Um deaktivierte Dienste anzuzeigen, ersetzen Sie einfach enableddurch disabled.
Details zu einem bestimmten Service abrufen
Möchten Sie den Status eines bestimmten Dienstes überprüfen? Vielleicht funktioniert er nicht richtig, oder Sie möchten einfach nur seinen Status, seine Protokolle, seine Speichernutzung usw.einsehen. Führen Sie folgenden Befehl aus:
sudo systemctl status <service-name>
Ersetzen Sie dies <service-name>durch Befehle wie `std::log` nginx.serviceoder cups.service`std::log`.Die Ausgabe zeigt den aktuellen Status, die letzten Protokolleinträge und einige CPU-/Speicherinformationen – quasi eine Zustandsprüfung. Auf manchen Distributionen ist es möglicherweise sinnvoller, journalctl -u <service-name>für detailliertere Protokolle `std::log` zu verwenden.
Dienste starten, stoppen, neu starten und neu laden – Änderungen dauerhaft speichern
Einen Dienst starten
Wenn Sie einen Dienst benötigen, der nach der Konfiguration sofort einsatzbereit ist, führen Sie Folgendes aus:
sudo systemctl start <service-name>
Dadurch wird der Dienst problemlos gestartet.Überprüfen Sie, ob es mit.funktioniert status.
Einen Dienst einstellen
Um einen fehlerhaften oder unnötigen Dienst zu beenden, führen Sie Folgendes aus:
sudo systemctl stop <service-name>
Neustart oder Neuladen (für Änderungen ohne Unterbrechung)
Wenn Sie die Konfigurationsdateien bearbeitet haben und die Änderungen anwenden möchten, ist ein Neustart in der Regel die beste Lösung. Einige Dienste unterstützen jedoch ein schnelles Neuladen. So starten Sie neu:
sudo systemctl restart <service-name>
Oder, falls unterstützt, laden Sie einfach die Konfiguration neu:
sudo systemctl reload <service-name>
Hinweis: Nicht alle Dienste unterstützen ein Neuladen; prüfen Sie daher vorher die Dokumentation. In der Regel ist dies sicherer, wenn Sie nur kleinere Änderungen vornehmen, z. B.einen Konfigurationsparameter ändern.
Dienste beim Systemstart aktivieren oder deaktivieren
Soll ein Dienst beim Hochfahren automatisch starten? Aktivieren Sie ihn:
sudo systemctl enable <service-name>
Und wenn Sie nicht möchten, dass es erneut startet, deaktivieren Sie es:
sudo systemctl disable <service-name>
Wenn Sie beides gleichzeitig tun möchten – aktivieren und sofort starten – fügen Sie einfach Folgendes hinzu --now:
sudo systemctl enable --now <service-name>
Dienstleistungen maskieren und demaskieren – Sperrt sie aus oder macht sie wieder verfügbar?
Durch Maskierung wird verhindert, dass ein Dienst gestartet wird. Wenn Sie ihn sperren möchten:
sudo systemctl mask <service-name>
Dadurch wird der Dienst an /dev/null gebunden, sodass er weder manuell noch automatisch gestartet werden kann. Dies ist nützlich, wenn Sie einen Dienst haben, der niemals ausgeführt werden soll. Um die Bindung aufzuheben, entfernen Sie einfach die Maskierung.
sudo systemctl unmask <service-name>
Tipp – Manchmal startet ein Dienst einfach nicht oder bleibt maskiert hängen. Starten Sie ihn neu, leeren Sie den Cache oder starten Sie ihn nach dem Maskieren/Entmaskieren neu, falls Probleme auftreten. Das passiert häufiger als man denkt, besonders bei hartnäckigen Diensten oder solchen, die durch benutzerdefinierte Skripte verursacht werden.
Zusammenfassung
Sich mit systemctl vertraut zu machen, ist für Linux ein echter Gamechanger. Es funktioniert zwar nicht immer perfekt, und manche Befehle verhalten sich je nach Distribution oder Version unterschiedlich, aber diese Grundlagen decken die meisten Situationen ab – egal ob Sie Fehler beheben, Anpassungen vornehmen oder einfach nur einen Dienst zum Laufen bringen wollen. Rechnen Sie mit etwas Ausprobieren, insbesondere bei maskierten Diensten, aber sobald Sie den Dreh raus haben, wird die Systemsteuerung deutlich einfacher.
Zusammenfassung
- Nutzen Sie diese
systemctl list-units --type=serviceFunktion, um Ihre Dienste anzuzeigen. - Status prüfen mit
systemctl status <service> - Starten/Stoppen mit
systemctl start/stop <service> - Beim Systemstart aktivieren oder deaktivieren mit
systemctl enable/disable <service> - Dienstleistungen maskieren oder demaskieren, wenn sie sich widerspenstig verhalten.
Hoffentlich erspart das jemandem viel Ärger. Die Linux-Dienstverwaltung ist nicht immer benutzerfreundlich, aber mit diesen Befehlen sind Sie bestens gerüstet. Ich drücke die Daumen, dass es hilft – es hat auf mehreren Systemen funktioniert, also klappt es vielleicht auch bei Ihnen.
Ähnliche Artikel
War dieser Artikel hilfreich?