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

So verwalten Sie Systemd-Dienste mit Systemctl unter Linux

Systemd ist ein Standardprozess zum Verwalten von Startdiensten in Linux-Betriebssystemen. Es wird verwendet, um zu steuern, welche Programme ausgeführt werden, wenn das Linux-System hochfährt. Es ist ein Systemmanager und hat sich zum neuen Standard für Linux-Betriebssysteme entwickelt. Mit Systemd können Sie einen benutzerdefinierten Systemd-Dienst erstellen, um jeden Prozess auszuführen und zu verwalten. In diesem Tutorial erklären wir, wie man Dienste mit systemd unter Linux verwaltet.

Voraussetzungen

  • Ein Server, auf dem Linux mit Systemd ausgeführt wird, ich werde hier einen Ubuntu 20.04-Server verwenden.
  • Ein Root-Passwort wird auf dem Server konfiguriert.

Systemd überprüfen

Standardmäßig ist Systemd in allen gängigen Betriebssystemen vorinstalliert. Sie können die installierte Version von Systemd mit dem folgenden Befehl überprüfen:

systemctl --version

Sie sollten die folgende Ausgabe sehen:

systemd 245 (245.4-4ubuntu3)+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid

Sie können den Speicherort von Systemd mit dem folgenden Befehl finden:

wo ist systemd

Sie sollten die folgende Ausgabe erhalten:

systemd:/usr/bin/systemd /usr/lib/systemd /etc/systemd /usr/share/systemd /usr/share/man/man1/systemd.1.gz

Führen Sie den folgenden Befehl aus, um den Speicherort von systemctl zu finden:

wo ist systemctl

Sie sollten die folgende Ausgabe erhalten:

systemctl:/usr/bin/systemctl /usr/share/man/man1/systemctl.1.gz

Sie können auch mit dem folgenden Befehl überprüfen, ob Systemd ausgeführt wird oder nicht:

ps -eaf | grep systemd

Sie sollten die folgende Ausgabe erhalten:

root 269 1 0 09:57 ? 00:00:01 /lib/systemd/systemd-journaldroot 294 1 0 09:57 ? 00:00:00 /lib/systemd/systemd-udevdsystemd+ 297 1 0 09:57 ? 00:00:00 /lib/systemd/systemd-networkdmessage+ 319 1 0 09:57 ? 00:00:00 /usr/bin/dbus-daemon --system --address=systemd:--nofork --nopidfile --systemd-activation --syslog-onlyroot 329 1 0 09:57 ? 00:00:00 /lib/systemd/systemd-logindsystemd+ 382 1 0 09:57 ? 00:00:00 /lib/systemd/systemd-resolvedroot 1128 1 0 10:47 ? 00:00:00 /lib/systemd/systemd --userroot 1177 1152 0 10:48 pts/0 00:00:00 grep --color=auto systemd

Mit dem folgenden Befehl können Sie auch die Zeit analysieren, die jeder Prozess beim Systemstart benötigt:

Systemd-Analyze-Schuld

Sie sollten die folgende Ausgabe erhalten:

3.662s csm.service 1.899s apt-daily-upgrade.service 1.798s dev-sda1.device 1.400s systemd-logind.service 1.336s fstrim.service 1.207s systemd-networkd.service 1.131s systemd-resolved.service 856ms man-db.service 842ms systemd-journald.service 415ms e2scrub_reap.service 320ms keyboard-setup.service 295ms networkd-dispatcher.service 239ms systemd-udev-trigger.service 

Analysieren Sie die kritische Kette beim Booten mit dem folgenden Befehl:

systemd-analyse der kritischen Kette

Sie sollten die folgende Ausgabe erhalten:

Die Zeit, zu der die Einheit aktiv wurde oder gestartet wurde, wird nach dem Zeichen „@“ gedruckt. Die Zeit, die die Einheit zum Starten benötigte, wird nach dem Zeichen „+“ gedruckt.graphical.target @4.948s??multi-user.target @ 4.946s ??csm.service @1.282s +3.662s ??basic.target @1.277s ??sockets.target @1.276s ??dbus.socket @1.274s ??sysinit.target @1.257s ??systemd-update -utmp.service @1.247s +8ms ??systemd-tmpfiles-setup.service @1.228s +17ms ??systemd-journal-flush.service @1.201s +24ms ??systemd-journald.service @356ms +842ms ?? systemd-journald.socket @313ms ??system.slice @225ms ??-.slice @225ms

Dienste mit Systemd verwalten

Systemctl bietet eine einfachere Möglichkeit, die systemd-Dienste zu verwalten.

Führen Sie den folgenden Befehl aus, um den Apache-Dienst zu starten:

systemctl startet Apache2

Führen Sie den folgenden Befehl aus, um den Apache-Dienst neu zu starten:

systemctl startet Apache2 neu

Führen Sie den folgenden Befehl aus, um den Apache-Dienst zu stoppen:

systemctl stoppt Apache2

Führen Sie den folgenden Befehl aus, um den Apache-Dienst neu zu laden:

systemctl apache2 neu laden

Führen Sie den folgenden Befehl aus, damit der Apache-Dienst nach dem Systemneustart gestartet werden kann:

systemctl aktiviert Apache2

Führen Sie den folgenden Befehl aus, um den Apache-Dienst beim Systemstart zu entfernen:

systemctl deaktiviert Apache2

Führen Sie den folgenden Befehl aus, um den Apache-Dienst zu beenden:

systemctl kill apache2

Führen Sie den folgenden Befehl aus, um den Apache-Dienst zu maskieren:

systemctl mask apache2

Führen Sie den folgenden Befehl aus, um den Apache-Prozess zu demaskieren:

systemctl unmask Apache2

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Apache-Dienst aktiviert ist oder nicht:

systemctl is-enabled apache2

Führen Sie den folgenden Befehl aus, um den Status des Apache-Dienstes zu überprüfen:

systemctl-Status apache2

Wenn der Dienst ausgeführt wird, sollten Sie die folgende Ausgabe erhalten:

? apache2.service – Der Apache HTTP-Server Geladen:geladen (/lib/systemd/system/apache2.service; aktiviert; Herstellervoreinstellung:aktiviert) Aktiv:aktiv (läuft) seit Sa 2021-01-09 10:53:12 UTC; Vor 26 Sekunden Dokumente:https://httpd.apache.org/docs/2.4/ Haupt-PID:1708 (Apache2) Aufgaben:55 (Grenze:2353) Speicher:5,8 MB CGroup:/system.slice/apache2.service ??1708 /usr/sbin/apache2 -k start ??1709 /usr/sbin/apache2 -k start ??1710 /usr/sbin/apache2 -k startJan 09 10:53:12 ubuntu2004 systemd[1]:Starten des Apache HTTP-Servers ...

Nachdem Sie eine systemd-Datei umbenannt oder gelöscht haben, müssen Sie sie neu laden, um die Änderungen zu übernehmen. Um die systemd-Dienstdatei neu zu laden, führen Sie den folgenden Befehl aus:

systemctl daemon-reload

Systemd-Unit-Dateien verwalten

Die obigen Befehle sind nützlich, um einzelne Dienste zu verwalten. Es kann jedoch nicht verwendet werden, um den aktuellen Zustand des Systems zu ermitteln. Es gibt viele andere Befehle, die nützlich sind, um diese Informationen bereitzustellen.

Führen Sie den folgenden Befehl aus, um eine Liste aller verfügbaren Einheiten anzuzeigen:

systemctl list-unit-files

In der folgenden Ausgabe sollten Sie eine Liste aller Unit-Dateien sehen:

UNIT FILE STATE VENDOR PRESETproc-sys-fs-binfmt_misc.automount statisch aktiviert -.mount generiert aktiviert dev-hugepages.mount statisch aktiviert dev-mqueue.mount statisch aktiviert proc-sys-fs-binfmt_misc.mount deaktiviert aktiviert sys- fs-fuse-connections.mount statisch aktiviert sys-kernel-config.mount statisch aktiviert sys-kernel-debug.mount statisch aktiviert sys-kernel-tracing.mount statisch aktiviert acpid.path aktiviert aktiviert ntp-systemd-netif.path aktiviert aktiviert systemd-ask-password-console.path statisch aktiviert systemd-ask-password-wall.path statisch aktiviert session-2.scope tran sient aktiviert acpid.service deaktiviert aktiviert apt-daily-upgrade.service statisch aktiviert apt-daily.service statisch aktiviert [email-geschützt] aktiviert aktiviert console-getty.service deaktiviert deaktiviert console-setup.service aktiviert aktiviert [email-geschützt] statisch aktiviert cron .service aktiviert aktiviert cryptdisks-early.service maskiert aktiviert cryptdisks.service maskiert aktiviert csm.service aktiviert aktiviert dbus-org.freedesktop.hostname1.service statisch aktiviert dbus-org.freedesktop.locale1.service statisch aktiviert 

Führen Sie den folgenden Befehl aus, um eine Liste aller aktiven Einheiten anzuzeigen:

systemctl list-units

Sie sollten die folgende Ausgabe sehen:

 UNIT LOAD ACTIVE SUB DESCRIPTION> proc-sys-fs-binfmt_misc.automount geladen aktiv warten Beliebige ausführbare Datei> sys-devices-pci0000:00-0000:00:03.0-virtio0-net-eth0.device geladen aktiv Plugged Virtio Netzwerkgerät> sys-devices-pci0000:00-0000:00:04.0-virtio1-net-eth1.device geladen aktiv angeschlossen Virtio-Netzwerkgerät> sys-devices-pci0000:00-0000:00:05.0-virtio2-host2-target2 :0:0-2:0:0:0-block-sda-sda1.device geladen aktiv angeschlossen QEMU_HARDDISK 1> sys-devices-pci0000:00-0000:00:05.0-virtio2-host2-target2:0:0- 2:0:0:0-block-sda.device geladen aktiv angeschlossen QEMU_HARDDISK> sys-devices-platform-serial8250-tty-ttyS1.device geladen aktiv angeschlossen /sys/devices/platfo rm/se> sys-devices-platform-serial8250-tty-ttyS10.device geladen aktiv angeschlossen /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS11.device geladen aktiv angeschlossen /sys/devices/ Plattform/se> sys-devices-platform-serial8250-tty-ttyS12.device geladen aktiv angeschlossen /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS13.device geladen aktiv angeschlossen /sys/devices/ Plattform/se> sys-devices-platform-serial8250-tty-ttyS14.device geladen aktiv angeschlossen /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS15.device geladen aktiv angeschlossen /sys/devices/ Plattform/se> sys-devices-platform-serial8250-tty-ttyS16.device geladen aktiv angeschlossen /sys/devices/platf orm/se> sys-devices-platform-serial8250-tty-ttyS17.device geladen aktiv angeschlossen /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS18.device geladen aktiv angeschlossen /sys/devices/ Plattform/se> sys-devices-platform-serial8250-tty-ttyS19.device geladen aktiv angeschlossen /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS2.device geladen aktiv angeschlossen /sys/devices/ Plattform/se> sys-devices-platform-serial8250-tty-ttyS20.device geladen aktiv angeschlossen /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS21.device geladen aktiv angeschlossen /sys/devices/ Plattform/se> sys-devices-platform-serial8250-tty-ttyS22.device geladen aktiv angeschlossen /sys/devices/plat form/se> sys-devices-platform-serial8250-tty-ttyS23.device geladen aktiv angeschlossen /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS24.device geladen aktiv angeschlossen /sys/devices/ Plattform/se> sys-devices-platform-serial8250-tty-ttyS25.device geladen aktiv angeschlossen /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS26.device geladen aktiv angeschlossen /sys/devices/ Plattform/se> sys-devices-platform-serial8250-tty-ttyS27.device geladen aktiv angeschlossen /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS28.device geladen aktiv angeschlossen /sys/devices/ Plattform/se> sys-devices-platform-serial8250-tty-ttyS29.device geladen aktiv angeschlossen /sys/devices/pla tform/se> sys-devices-platform-serial8250-tty-ttyS3.device geladen aktiv angeschlossen /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS30.device geladen aktiv angeschlossen /sys/devices/ platform/se> sys-devices-platform-serial8250-tty-ttyS31.device geladen aktiv angeschlossen /sys/devices/platform/se>

Führen Sie den folgenden Befehl aus, um eine Liste aller ausgefallenen Einheiten anzuzeigen:

systemctl --failed

Führen Sie den folgenden Befehl aus, um alle Dienste einschließlich aktivierter und deaktivierter Dienste aufzulisten:

systemctl list-unit-files --type=service

Sie sollten die folgende Ausgabe sehen:

UNIT FILE STATE VENDOR PRESETacpid.service deaktiviert aktiviert apache-htcacheclean.service deaktiviert aktiviert [E-Mail-geschützt] deaktiviert aktiviert apache2.service aktiviert aktiviert [E-Mail-geschützt] deaktiviert aktiviert apt-daily-upgrade.service statisch aktiviert apt-daily.service statisch aktiviert [E-Mail-geschützt] aktiviert aktiviert console-getty.service deaktiviert deaktiviert console-setup.service aktiviert aktiviert [E-Mail-geschützt] statisch aktiviert cron.service aktiviert aktiviert cryptdisks-early.service maskiert aktiviert cryptdisks.service maskiert ena bled csm.service aktiviert aktiviert dbus-org.freedesktop.hostname1.service statisch aktiviert dbus-org.freedesktop.locale1.service statisch aktiviert dbus-org.freedesktop.login1.service statisch aktiviert dbus-org.freedesktop.resolve1.service aktiviert aktiviert dbus-org.freedesktop.timedate1.service statisch aktiviert dbus-org.freedesktop.timesync1.service maskiert aktiviert dbus.service statisch aktiviert debug-shell.service deaktiviert deaktiviert dmesg.service aktiviert aktiviert [E-Mail-geschützt] statisch aktiviert e2scrub_all.service statisch aktiviert [E-Mail-geschützt] statisch aktiviert e2scrub_reap.service aktiviert aktiviert emergency.service st atic aktiviert fstrim.service statisch aktiviert getty-static.service statisch aktiviert [E-Mail-geschützt] aktiviert aktiviert 

Sie können die Eigenschaften der SSH-Einheit sehen, führen Sie den folgenden Befehl aus:

systemctl show sshd.service

Sie sollten die folgende Ausgabe sehen:

Id=sshd.serviceNames=sshd.serviceRequires=basic.targetWants=system.sliceWantedBy=multi-user.targetConflicts=shutdown.targetBefore=shutdown.target multi-user.targetAfter=syslog.target network.target auditd.service systemd -journald.socket basic.target system.sliceDescription=OpenSSH-Server-Daemon

Sockets mit Systemctl verwalten

Sie können Sockets auch mit dem Systemctl-Befehl verwalten.

Führen Sie den folgenden Befehl aus, um alle verfügbaren System-Sockets aufzulisten:

systemctl list-unit-files --type=socket

Sie sollten die folgende Ausgabe sehen:

UNIT FILE STATE VENDOR PRESETacpid.socket aktiviert aktiviert dbus.socket statisch aktiviert ssh.socket deaktiviert aktiviert syslog.socket statisch deaktiviert systemd-fsckd.socket statisch aktiviert systemd-initctl.socket statisch aktiviert systemd-journald-audit.socket statisch aktiviert systemd-journald-dev-log.socket statisch aktiviert [E-Mail-geschützt] statisch aktiviert systemd-journald.socket statisch aktiviert [E-Mail-geschützt] statisch aktiviert systemd-networkd.socket deaktiviert aktiviert systemd-rfkill.socket statisch aktiviert systemd-udevd-control. Socket statisch aktiviert systemd-udevd-kernel.socket statisch aktiviert 

Führen Sie den folgenden Befehl aus, um den SSH-Socket zu starten:

systemctl startet ssh.socket

Führen Sie den folgenden Befehl aus, um den SSH-Socket zu stoppen:

systemctl stop ssh.socket

Führen Sie den folgenden Befehl aus, um den SSH-Socket neu zu starten:

systemctl startet ssh.socket neu

Führen Sie den folgenden Befehl aus, um den Status des SSH-Sockets zu überprüfen:

Systemctl-Status ssh.socket

Führen Sie den folgenden Befehl aus, um den SSH-Socket beim Booten zu aktivieren und zu deaktivieren:

systemctl aktiviert ssh.socket
systemctl deaktiviert ssh.socket

Zusätzliche Systemctl-Befehle

Mit dem Befehl systemctl können Sie mehrere Aufgaben ausführen. Wenn Sie das System in den Einzelbenutzermodus versetzen möchten, führen Sie den folgenden Befehl aus:

systemctl-Rettung

Führen Sie den folgenden Befehl aus, um das System anzuhalten:

systemctl anhalten

Um das System herunterzufahren, führen Sie den folgenden Befehl aus:

systemctl poweroff

Um das System neu zu starten, führen Sie den folgenden Befehl aus:

Systemctl-Neustart

Schlussfolgerung

In der obigen Anleitung haben Sie gelernt, wie Sie den systemd-Dienst unter Linux verwalten und steuern. Ich hoffe, dies wird Ihnen helfen, mit Ihrer systemd-Instanz zu interagieren und sie zu steuern. Fühlen Sie sich frei, mich zu fragen, wenn Sie irgendwelche Fragen haben.


Linux
  1. So verwenden Sie den Systemctl-Befehl zum Verwalten von Systemd-Diensten

  2. So erstellen Sie einen Systemd-Dienst unter Linux

  3. So listen Sie Systemd-Dienste unter Linux auf

  4. Verwenden Sie Systemctl, um Dienste zu verwalten

  5. So entfernen Sie systemd-Dienste

Auflisten von Linux-Diensten mit Systemctl

Systemctl-Befehle zum Verwalten des Systemd-Dienstes

So verwalten Sie Nodejs-Versionen mit n in Linux

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus

So verwenden Sie systemctl unter Linux

So verwalten Sie Speicher mit GParted Linux