
Unter Linux ist ein Dienst ein Programm, das im Hintergrund ausgeführt wird. Dienste können bei Bedarf oder beim Booten gestartet werden.
Wenn Sie Linux als primäres Betriebssystem oder Entwicklungsplattform verwenden, werden Sie mit verschiedenen Diensten wie Webserver, SSH oder Cron zu tun haben. Zu wissen, wie man laufende Dienste auflistet oder den Dienststatus überprüft, ist beim Debuggen von Systemproblemen wichtig.
Die meisten neueren Linux-Distributionen verwenden systemd als Standard-Init-System und Service-Manager.
Systemd ist eine Suite von Tools zur Verwaltung von Linux-Systemen. Es wird verwendet, um die Maschine hochzufahren, Dienste zu verwalten, Dateisysteme automatisch zu mounten, Ereignisse zu protokollieren, Hostnamen einzurichten und andere Systemaufgaben.
Dieser Artikel erklärt, wie man Dienste unter Linux auflistet.
Linux-Dienste auflisten #
Systemd verwendet das Konzept von Einheiten, die Dienste, Sockets, Einhängepunkte, Geräte usw. sein können. Einheiten werden mithilfe von Textdateien in ini
definiert Format. Diese Dateien enthalten Informationen über das Gerät, seine Einstellungen und auszuführende Befehle. Die Dateinamenerweiterungen definieren den Unit-Dateityp. Beispielsweise haben Einheitendateien für Systemdienste einen .service
Erweiterung.
systemctl
ist ein Befehlszeilendienstprogramm, das zum Steuern von systemd und zum Verwalten von Diensten verwendet wird. Es ist Teil des systemd-Ökosystems und standardmäßig auf allen Systemen verfügbar.
Geben Sie Folgendes ein, um eine Liste aller geladenen Diensteinheiten zu erhalten:
sudo systemctl list-units --type service
UNIT LOAD ACTIVE SUB DESCRIPTION
cron.service loaded active running Regular background program processing daemon
...
Jede Ausgabezeile enthält die folgenden Spalten von links nach rechts:
UNIT
- Der Name der Serviceeinheit.LOAD
- Information, ob die Unit-Datei in den Speicher geladen wurde.ACTIVE
- Der High-Level-Unit-Dateiaktivierungsstatus, der aktiv, neu ladend, inaktiv, fehlgeschlagen, aktivierend, deaktivierend sein kann. Es ist eine Verallgemeinerung desSUB
Spalte.SUB
- Der Low-Level-Unit-Dateiaktivierungsstatus. Der Wert dieses Feldes hängt vom Gerätetyp ab. Beispielsweise kann eine Einheit vom Typ Dienst einen der folgenden Zustände aufweisen:„Dead“, „Exited“, „Failed“, „Inactive“ oder „Running“.DESCRIPTION
- Kurze Beschreibung der Unit-Datei.
Standardmäßig listet der Befehl nur die geladenen aktiven Einheiten auf. Um auch geladene, aber inaktive Einheiten zu sehen, übergeben Sie --all
Möglichkeit:
sudo systemctl list-units --type service --all
Wenn Sie alle installierten Unit-Dateien sehen möchten, nicht nur die geladenen, verwenden Sie:
sudo systemctl list-unit-files
Dienststatus wird angezeigt #
Um den Status eines Dienstes zu überprüfen, verwenden Sie den systemctl status
Befehl:
sudo systemctl status <service_name>.service
Wobei <service_name>
ist der Name der Serviceeinheit, die Sie überprüfen möchten. Um beispielsweise den aktuellen Status des nginx-Dienstes zu ermitteln, würden Sie Folgendes ausführen:
sudo systemctl status nginx.service
Das Suffix „.service“ können Sie weglassen. systemctl status nginx
ist dasselbe wie systemctl status nginx.service
.● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-12-23 19:13:50 UTC; 5s ago
Docs: man:nginx(8)
Process: 3061052 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 3061063 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 3061064 (nginx)
Tasks: 2 (limit: 470)
Memory: 6.0M
CGroup: /system.slice/nginx.service
├─3061064 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─3061065 nginx: worker process
Dec 23 19:13:50 linuxize.dev systemd[1]: Starting A high performance web server and a reverse proxy server...
Der Befehl gibt die folgenden Informationen aus:
Loaded
- Ob die Service-Unit geladen wurde und der vollständige Pfad zur Unit-Datei. Es zeigt auch, ob das Gerät zum Starten beim Booten aktiviert ist.Active
- Ob der Dienst aktiv ist und ausgeführt wird. Wenn Ihr Terminal Farben unterstützt und der Dienst aktiv ist und ausgeführt wird, wird der Punkt (●
) und „aktiver (laufender)“ Teil werden grün gedruckt. Die Zeile zeigt auch an, wie lange der Dienst läuft.Docs
- Die Servicedokumentation.Process
- Informationen zu den Serviceprozessen.Main PID
- Die Dienst-PID.Tasks
- Die Anzahl der auf die Einheit entfallenden Aufgaben und das Aufgabenlimit.Memory
- Informationen über verbrauchten Speicher.CGroup
- Informationen über verwandte Kontrollgruppen.
Wenn Sie nur den Dienststatus überprüfen möchten, verwenden Sie den systemctl is-active
Befehl. Um beispielsweise zu überprüfen, ob der nginx-Dienst ausgeführt wird, würden Sie Folgendes ausführen:
systemctl is-active nginx.service
active
Der Befehl zeigt Ihnen den Dienststatus an. Wenn der Dienst aktiv ist, gibt der Befehl einen Exit-Status von 0 zurück, was nützlich sein kann, wenn der Befehl in Shell-Skripten verwendet wird.
Schlussfolgerung #
Wir haben Ihnen gezeigt, wie Sie das systemctl
verwenden Befehl, um Linux-Dienste aufzulisten und ihren Status zu überprüfen.