Systemctl ist ein Dienstprogramm, das von systemd zum Verwalten von System- und Dienstmanagern verwendet wird. Viele moderne Linux-Distributionen wie Ubuntu, Debian, Fedora, Linux Mint, OpenSuSE, Redhat haben systemd als Standard-Init-System übernommen.
Mit systemctl können Sie den Dienst starten, stoppen, neu laden, neu starten, Units auflisten, den Dienststatus prüfen, den Dienst aktivieren/deaktivieren, Ziele (Runlevel) und die Energieverwaltung verwalten.
In diesem Tutorial zeige ich Ihnen, wie Sie systemctl-Befehle verwenden, um den systemd-Dienst unter Linux zu verwalten.
1. Systemctl Dienst starten/stoppen/neu starten/neu laden
Um einen Dienst unter Linux zu starten, führen Sie systemctl gefolgt von „start“ space service name.
ausBeispiel:
systemctl start dnsmasq
Im Gegensatz zum Dienstbefehl gibt der Befehl systemctl start keine Ausgabe aus.
Um einen Dienst zu stoppen, verwenden Sie systemctl stop service-name. Zum Beispiel:
systemctl stop dnsmasq
Um einen Dienst neu zu starten, verwenden Sie systemctl restart service-name.
Beispiel:
systemctl restart dnsmasq
Um die Konfiguration des Dienstes (z. B. ssh) neu zu laden, ohne ihn neu zu starten, verwenden Sie systemctl reload service-name.
Zum Beispiel:
systemctl reload sshd
2. Systemctl prüft den Dienststatus
Um zu sehen, ob ein Dienst läuft oder nicht, können wir die systemctl-Statusprüfung verwenden.
systemctl status dnsmasq
3. Dienst beim Booten prüfen und aktivieren/deaktivieren
Um einen Dienst beim Booten zu aktivieren (dies entspricht 'chkconfig on' im sysvinit-System), verwenden Sie systemctl enable service-name.
Beispiel:
systemctl enable dnsmasq.service
Ebenso können die Dienste beim Booten deaktiviert werden, führen Sie Folgendes aus:
systemctl disable dnsmasq.service
Um zu überprüfen, ob ein Dienst beim Booten aktiviert ist oder nicht, führen Sie Folgendes aus:
systemctl is-enabled dnsmasq.service
4. Systemctl Listeneinheiten
Um alle laufenden Units aufzulisten, führen Sie den Befehl systemctl ohne Option aus. Die Option list-units tut dasselbe.
systemctl
oder
systemctl list-units
Die fehlerhaften Units können mit der Option --failed aufgelistet werden.
systemctl --failed
Um alle aktiven Dienste aufzulisten, führen Sie Folgendes aus:
systemctl list-units -t service
6. Systemctl-Befehle zum Neustarten/Herunterfahren
Wie Shutdown-Befehl, systemctl-Befehl, um das System herunterzufahren, neu zu starten oder in den Ruhezustand zu versetzen.
Der folgende Befehl fährt das System herunter, schaltet den Computer aus und sendet eine Benachrichtigung an alle angemeldeten Benutzer.
systemctl poweroff
Der folgende Befehl fährt das System herunter, schaltet die Maschine jedoch nicht aus. Dadurch wird eine Benachrichtigung an alle angemeldeten Benutzer gesendet.
systemctl halt
Schalten Sie das Gerät aus, aber es werden keine Benachrichtigungen an alle angemeldeten Benutzer gesendet.
systemctl --no-wall poweroff
Um Details zum Herunterfahren anzuzeigen, führen Sie den folgenden Befehl aus.
journalctl -u systemd-shutdownd
7. Systemclt zur Verwaltung von Remote-Systemen
In der Regel können alle oben genannten systemctl-Befehle verwendet werden, um einen Remote-Host mit dem systemctl-Befehl selbst zu verwalten. Dies verwendet ssh für die Kommunikation mit dem Remote-Host. Alles, was Sie tun müssen, ist, den Benutzer und den Host wie folgt zum systemctl-Befehl hinzuzufügen:
systemctl status sshd -H [email protected]
8. Ziele verwalten
Systemd hat ein Konzept von Zielen, die einen ähnlichen Zweck wie Runlevels im sysVinit-System haben.
Die Runlevel in sysVinit waren meistens numerisch (0,1,2,...). Hier sind die Runlevels in sysVinit mit ihren systemd-Gegenstücken:
0 runlevel0.target, poweroff.target
1, s, single runlevel1.target, rescue.target
2, 4 runlevel2.target, runlevel4.target, multi-user.target
3 runlevel3.target, multi-user.target
5 runlevel5.target, graphical.target
6 runlevel6.target, reboot.target
emergency emergency.target
Geben Sie Folgendes ein, um das aktuelle Ziel zu ändern:
systemctl isolate graphical.target
Wenn Sie sehen möchten, in welchem Ziel Sie sich befinden, müssen Sie alle entsprechenden Einheiten auflisten.
systemctl list-units --type=target
Sie können "graphical.target" hier aufgelistet sehen. Deshalb haben wir unser Ziel geändert. Jetzt ändern wir den Runlevel wieder auf multi-user.target und analysieren dann diese Ausgabe:
systemctl isolate multi-user.target
systemctl list-units --type=target
Um das Standardziel aufzulisten, geben Sie Folgendes ein:
systemctl get-default
Das Standardziel kann mit dem Befehl set-default gesetzt werden, geben Sie ein:
systemctl set-default graphical.target
Andere nützliche systemd-Befehle
Systemd anmelden
Der Systemd hat ein eigenes Protokollierungssystem namens Journald. Er ersetzt den Syslog-Daemon von sysVinit.
journalctl
Führen Sie den Befehl „journalctl -b“ aus, um alle Bootmeldungen anzuzeigen.
journalctl -b
Der folgende Befehl folgt den Systemprotokollen in Echtzeit (ähnlich wie tail -f).
journalctl -f
Um Protokolle speziell für einen bestimmten Dienst oder eine ausführbare Datei zu überprüfen, verwenden Sie journalctl als:
journalctl /usr/sbin/dnsmasq
Startvorgangsdauer ermitteln
So finden Sie die Dauer des systemd-Startvorgangs mit dem folgenden Befehl:
systemd-analyze
Die systemd-analyze time zeigt auch die gleichen Informationen.
systemd-analyze time
Um eine Liste aller laufenden Units geordnet nach Initialisierungszeit auszudrucken, verwenden Sie systemd-analyze-Schuld.
systemd-analyze blame
Hostnamectl-Befehl
Um den Hostnamen anzuzeigen und zu ändern, verwenden Sie den Befehl hostnamectl.
hostnamectl
Schlussfolgerung
In diesem Tutorial haben wir systemctl-Befehle zum Verwalten des systemd-Dienstes in Linux-Distributionen gelernt. Ich hoffe, Sie hatten Spaß beim Lesen und hinterlassen Sie bitte Ihre Vorschläge im Kommentarbereich unten.
Lesen Sie auch:
- Systemd-Boot-Prozess unter Linux genau betrachtet
- Bunt! systemd vs sysVinit Linux-Cheatsheet