GNU/Linux >> LINUX-Kenntnisse >  >> Linux

10 praktische systemd-Befehle:Eine Referenz

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. ]


Linux
  1. Hinzufügen eines neuen Dienstes zu Linux systemd

  2. Grundlegende Systemd-Dienstdateien schreiben?

  3. Systemd-Dienst startet Nodejs nicht?

  4. Wie paketiere ich einen Systemd-Dienst?

  5. So leiten Sie die Ausgabe des systemd-Dienstes in eine Datei um

Systemctl-Befehle zum Verwalten des Systemd-Dienstes

Verwenden von systemd-Funktionen zum Sichern von Diensten

Verwalten von cgroups mit systemd

Basisdienstbefehle

Systemd-Befehlszeilenreferenz (Spickzettel)

Wie sende ich eine E-Mail, wenn ein systemd-Dienst neu gestartet wird?