Schlechtes systemd
hatte seinen Anteil an Kritikern, aber es scheint hier zu sein, um für Linux-Administratoren zu bleiben, also können wir uns genauso gut daran gewöhnen. Dieses praktische systemd
Die Befehlsreferenz hilft Ihnen, bei der Ausführung normaler Verwaltungsaufgaben bei Verstand zu bleiben. Also, bis wir etwas bekommen, das brauchbarer, schmackhafter und wünschenswerter ist als systemd
, genießen Sie bitte diese Liste mit zehn praktischen Befehlen für Ihre Bequemlichkeit. Diese Befehle sind in keiner bestimmten Reihenfolge nach Wichtigkeit oder Relevanz.
Unit-Dateien auflisten
Aus dem systemd
Manpage:Eine Unit-Datei ist eine reine Textdatei im INI-Stil, die Informationen über einen Dienst, einen Socket, ein Gerät, einen Einhängepunkt, einen Automount-Punkt, eine Auslagerungsdatei oder -partition, ein Startziel, eine überwachte Datei codiert Systempfad, ein Timer, der von systemd
gesteuert und überwacht wird , ein Ressourcenverwaltungssegment oder eine Gruppe von extern erstellten Prozessen.
$ systemctl list-unit-files
UNIT FILE STATE
proc-sys-fs-binfmt_misc.automount static
dev-hugepages.mount static
dev-mqueue.mount static
proc-sys-fs-binfmt_misc.mount static
sys-fs-fuse-connections.mount static
sys-kernel-config.mount static
sys-kernel-debug.mount static
tmp.mount disabled
brandbot.path disabled
systemd-ask-password-console.path static
systemd-ask-password-plymouth.path static
systemd-ask-password-wall.path static
session-1.scope static
arp-ethers.service disabled
auditd.service enabled
[email protected] enabled
<many more entries>
Natürlich können Sie immer zu grep
leiten um nur die aktivierten Dienste anzuzeigen.
$ systemctl list-unit-files |grep enabled
auditd.service enabled
[email protected] enabled
crond.service enabled
dbus-org.fedoraproject.FirewallD1.service enabled
dbus-org.freedesktop.nm-dispatcher.service enabled
firewalld.service enabled
[email protected] enabled
irqbalance.service enabled
kdump.service enabled
lvm2-monitor.service enabled
<many more entries>
Diese Unit-Dateien befinden sich unter /lib/systemd/system
, entsprechen in etwa den Legacy-Init-Skripten, die sich unter /etc/rc.d/init.d
befanden . Wenn Sie oder Ihre Softwareinstallation Init-Skripte erstellen, wird sogar ein entsprechendes systemd
Unit-Datei wird für Sie gemappt. Eine weitere Erläuterung findet sich in /etc/rc.d/init.d/README
:
You are looking for the traditional init scripts in /etc/rc.d/init.d,
and they are gone?
Here's an explanation on what's going on:
You are running a systemd-based OS where traditional init scripts have
been replaced by native systemd services files. Service files provide
very similar functionality to init scripts. To make use of service
files simply invoke "systemctl", which will output a list of all
currently running services (and other units). Use "systemctl
list-unit-files" to get a listing of all known unit files, including
stopped, disabled and masked ones. Use "systemctl start
foobar.service" and "systemctl stop foobar.service" to start or stop a
service, respectively. For further details, please refer to
systemctl(1).
Note that traditional init scripts continue to function on a systemd
system. An init script /etc/rc.d/init.d/foobar is implicitly mapped
into a service unit foobar.service during system initialization.
Thank you!
Further reading:
man:systemctl(1)
man:systemd(1)
http://0pointer.de/blog/projects/systemd-for-admins-3.html
http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities
Wie Sie sehen können, init.d
wurde zugunsten von systemd
entfernt . Es ist hier, um zu bleiben, bis jemand etwas Besseres findet. (Ich hoffe, dass jemand schnell an einem Ersatz arbeitet.)
Einheiten auflisten
Das Auflisten aktiver Einheiten zeigt viele nützliche Informationen über Ihre geladenen und aktiven Dienste. Die Ausgabe ist zu detailliert, um sie hier zu demonstrieren, aber versuchen Sie den folgenden Befehl auf Ihrem System, um zu sehen, was ich meine.
$ systemctl list-units
Die Statusfelder sind toll zu sehen, aber das Beschreibungsfeld ist für mich am nützlichsten. Es enthält detaillierte Informationen zu Ihren Diensten.
Starten Sie einen Dienst
Um einen Dienstnamen zu erhalten, listen Sie Ihre Unit-Dateien auf und suchen Sie nach der gewünschten. Verwenden Sie dann das systemctl
Befehl, um Ihren Dienst zu starten. Ich verwende firewalld
als Beispiel.
$ sudo systemctl start firewalld
Überraschenderweise, oder vielleicht nicht so überraschend, gibt es keine Reaktion auf das Starten, Stoppen oder Neustarten eines Dienstes. Um den Status eines Dienstes zu überprüfen, müssen Sie den Statusbefehl verwenden.
Überprüfen eines Dienststatus
Um den Status eines Dienstes zu überprüfen, verwenden Sie den systemctl status service-name
Befehl.
$ sudo systemctl status sshd
[sudo] password for khess:
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-04-29 07:44:57 CDT; 2h 17min ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1055 (sshd)
CGroup: /system.slice/sshd.service
└─1055 /usr/sbin/sshd -D
Apr 29 07:44:57 centos7 systemd[1]: Starting OpenSSH server daemon...
Apr 29 07:44:57 centos7 sshd[1055]: Server listening on 0.0.0.0 port 22.
Apr 29 07:44:57 centos7 sshd[1055]: Server listening on :: port 22.
Apr 29 07:44:57 centos7 systemd[1]: Started OpenSSH server daemon.
Apr 29 07:51:35 centos7 sshd[1396]: Accepted password for khess from 192.168.1.85 port 56769 ssh2
Ich mag den Status von systemd wegen der angegebenen Details. In der obigen Auflistung sehen Sie beispielsweise den vollständigen Pfad zur Unit-Datei, den Status, den Startbefehl und die letzten Statusänderungen.
[ Möchten Sie Red Hat Enterprise Linux ausprobieren? Laden Sie es jetzt kostenlos herunter. ]
Stoppen Sie einen Dienst
Einen laufenden Dienst zu stoppen ist so einfach wie einen zu starten.
$ sudo systemctl stop firewalld
Auch hier sehen Sie keine Antwort auf die Ausgabe dieses Befehls. Geben Sie einen Dienststatus aus, um Ihren Erfolg oder Misserfolg zu überprüfen.
Neustart eines Dienstes
Wenn Sie einen Dienst anhalten und starten möchten, ohne zwei Befehle auszuführen (Systemadministratoren sind schließlich ein fauler Haufen), führen Sie einen Neustart durch.
$ sudo systemctl restart firewalld
Es wird keine Systemantwort angezeigt.
System neu starten, anhalten und herunterfahren
Diese drei Aufgaben sind typische Aufgaben, die Systemadministratoren kennen müssen und die jetzt unter der Kontrolle von systemd
stehen .
Neu starten
Es gibt mehrere Möglichkeiten, Ihre Systeme neu zu starten, aber der alte Standby, reboot, ist eigentlich ein Link zum systemctl
Befehl. Ich gehe davon aus, dass es, da es funktioniert, das systemctl
verknüpft Befehl mit dem hinzugefügten Neustartschalter wie folgt:
$ sudo systemctl reboot
Derselbe Link gilt für die Halt- und Shutdown-Befehle.
Herunterfahren und anhalten
Es spielt keine Rolle, wie Sie es früher mit halt -p
gemacht haben oder shutdown now
oder was auch immer, der universelle Befehl lautet jetzt:
$ sudo systemctl poweroff
Dieser Befehl fährt das System herunter.
Dienste so einstellen, dass sie beim Booten ausgeführt werden
Sie sind an die chkconfig
gewöhnt Befehl, damit Ihre Dienste beim Booten und unter einem bestimmten Runlevel ausgeführt werden können. Nun, auch diese Zeiten sind vorbei, und sie wurden vom allgegenwärtigen systemctl
an sich gerissen Befehl.
Einen Dienst aktivieren, damit er beim Booten ausgeführt wird
Geben Sie den folgenden Befehl ein, um einen beliebigen Dienst so einzustellen, dass er beim Booten gestartet wird. Ich verwende firewalld
als Beispieldienst.
$ sudo systemctl enable firewalld
Deaktivieren der Ausführung eines Dienstes beim Booten
Um zu verhindern, dass ein Dienst beim Booten gestartet wird, geben Sie Folgendes ein:
$ sudo systemctl disable firewalld
Die firewalld
Der Dienst wird beim Booten nicht gestartet.
Abschluss
Dieses kurze, aber handliche systemd/systemctl
Referenzhandbuch sollte den Umgang mit systemd
erleichtern . Das ist zumindest die Theorie. Und wie Sie oft in meinen Artikeln sehen oder mich laut sagen hören:"Alles funktioniert auf dem Papier." Lassen Sie mich unbedingt auf Twitter wissen, was Sie von meinen Artikeln halten, und schlagen Sie auch neue Themen vor.
[ Kostenloser Online-Kurs:Technischer Überblick zu Red Hat Enterprise Linux. ]