Modius - Techblog

  • Ansible
  • Docker
  • DevOps
  • Gastautor werden
  • Newsletter abonnieren
  • Über Mich
  • Kontakt

Systemctl – Tipps und Tricks

Veröffentlicht am 21. August 2019 von Christian Piazzi Hinterlasse ein Kommentar , Aktualisiert am 27. Oktober 2020
Geschätzte Lesezeit: 2 Minuten

Beitragsbild systemctl tipps und tricks - weiß beleuchtete tastatur

Systemctl ist mittlerweile jedem Admin der sich außerhalb der Windows Welt bewegt bekannt. Wie man mit systemctl Dienste starten und stoppen kann, haben ich hier im Blog schon vor einiger Zeit erklärt. Heute will ich ein paar nützliche Befehle im Zusammenhang mit systemctl zeigen, die einem den Arbeitsalltag erleichtern können.

Inhaltsverzeichnis

Anzeigen der Unit Liste

Um eine Liste aller aktiven Einheiten zu sehen, die das System kennt, können wir den Befehl list-units verwenden. Das ganze sieht zb. auf meinem Raspberry Pi wie folgt aus:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
systemctl list-units
UNIT                                                                                                        LOAD   ACTIVE SUB       DESCRIPTION
proc-sys-fs-binfmt_misc.automount                                                                           loaded active running   Arbitrary Executable File Formats File System Automount Point
sys-devices-platform-serial8250-tty-ttyS0.device                                                            loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS0
sys-devices-platform-soc-3f201000.serial-tty-ttyAMA0.device                                                 loaded active plugged   /sys/devices/platform/soc/3f201000.serial/tty/ttyAMA0
sys-devices-platform-soc-3f202000.sdhost-mmc_host-mmc0-mmc0:aaaa-block-mmcblk0-mmcblk0p1.device             loaded active plugged   /sys/devices/platform/soc/3f202000.sdhost/mmc_host/mmc0/mmc0:aaaa/block/mmcblk0/mmcblk0p1
sys-devices-platform-soc-3f202000.sdhost-mmc_host-mmc0-mmc0:aaaa-block-mmcblk0-mmcblk0p2.device             loaded active plugged   /sys/devices/platform/soc/3f202000.sdhost/mmc_host/mmc0/mmc0:aaaa/block/mmcblk0/mmcblk0p2
sys-devices-platform-soc-3f202000.sdhost-mmc_host-mmc0-mmc0:aaaa-block-mmcblk0.device                       loaded active plugged   /sys/devices/platform/soc/3f202000.sdhost/mmc_host/mmc0/mmc0:aaaa/block/mmcblk0
sys-devices-platform-soc-3f300000.mmc-mmc_host-mmc1-mmc1:0001-mmc1:0001:1-ieee80211-phy0-rfkill0.device     loaded active plugged   /sys/devices/platform/soc/3f300000.mmc/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/ieee80211/phy0/rfkill0
sys-devices-platform-soc-3f300000.mmc-mmc_host-mmc1-mmc1:0001-mmc1:0001:1-net-wlan0.device                  loaded active plugged   /sys/devices/platform/soc/3f300000.mmc/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/net/wlan0
sys-devices-platform-soc-3f980000.usb-usb1-1\x2d1-1\x2d1.1-1\x2d1.1:1.0-net-eth0.device                     loaded active plugged   SMSC9512/9514 Fast Ethernet Adapter
sys-devices-platform-soc-soc:audio-sound-card1.device                                                       loaded active plugged   /sys/devices/platform/soc/soc:audio/sound/card1
sys-devices-virtual-net-docker0.device                                                                      loaded active plugged   /sys/devices/virtual/net/docker0
sys-devices-virtual-net-veth0c300db.device                                                                  loaded active plugged   /sys/devices/virtual/net/veth0c300db
sys-devices-virtual-tty-ttyprintk.device                                                                    loaded active plugged   /sys/devices/virtual/tty/ttyprintk
sys-module-configfs.device                                                                                  loaded active plugged   /sys/module/configfs
sys-module-fuse.device                                                                                      loaded active plugged   /sys/module/fuse
 
...
 
sound.target                                                                                                loaded active active    Sound Card
swap.target                                                                                                 loaded active active    Swap
sysinit.target                                                                                              loaded active active    System Initialization
timers.target                                                                                               loaded active active    Timers
systemd-tmpfiles-clean.timer                                                                                loaded active waiting   Daily Cleanup of Temporary Directories
 
LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.
 
130 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

Da diese Liste sehr lang ist, habe ich einen Teil der Units in der Mitte entfernt und durch … ersetzt.

Bei der Ausgabe werden die folgenden fünf Spalten angegeben:

  • UNIT: Der Name der Systemeinheit.
  • LOAD: Ob die Konfiguration der Unit vom System geladen wurde. Die Konfiguration der geladenen Unit wird im Speicher gehalten.
  • ACTIVE: Ein zusammenfassender Status darüber, ob die Unit aktiv ist. Dies ist in der Regel eine ziemlich einfache Methode, um festzustellen, ob die Unit erfolgreich gestartet wurde oder nicht.
  • SUB: Dies ist ein untergeordneter Zustand, der detailliertere Informationen über die Unit anzeigt. Dies variiert oft je nach Unit, Zustand und der tatsächlichen Modus, in der die Unit läuft.
  • DESCRIPTION: Eine kurze Beschreibung dessen, was die Unit ist/macht.

Anzeigen der Unit Datei

Manchmal ist es hilfreich, sich die Konfigurationsdatei für einen Dienst anzeigen zu lassen. Diese findet man für unter anderem in /etc/systemd/system. Man kann sich den Inhalt aber auch direkt mit dem systemctl Befehl anzeigen lassen. Ich zeige das hier mal an dem sshd Dienst:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
systemctl cat sshd.service
# /lib/systemd/system/ssh.service
[Unit]
Description=OpenBSD Secure Shell server
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run
 
[Service]
EnvironmentFile=-/etc/default/ssh
ExecStartPre=/usr/sbin/sshd -t
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/usr/sbin/sshd -t
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
Alias=sshd.service

Hier sehen wir nun, wie der ssh Dienst definiert wurde. In der ersten Zeile ist als Kommentar der Pfad zur Konfigurationsdatei hinterlegt, damit man diese ggf. mit einem Editor öffnen kann um Änderungen durchführen zu können.

Unit Dependency

In einer Konfigurationsdatei für einen dienst kann man auch Abhängigkeiten definieren. Das sind zum Beispiel Dienste, die zuerst gestartet sein müssen. Im Kontext von sshd sehen wir, dass der ssh Dienst von einigen anderen Diensten abhängt. Nur wenn diese Dienste vorher erfolgreich gestartet wurde, kann auch der ssh Dienst gestartet werden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
ystemctl list-dependencies sshd.service
sshd.service
● ├─system.slice
● └─basic.target
●   ├─alsa-restore.service
●   ├─alsa-state.service
●   ├─paths.target
●   ├─slices.target
●   │ ├─-.slice
●   │ └─system.slice
●   ├─sockets.target
●   │ ├─avahi-daemon.socket
●   │ ├─dbus.socket
●   │ ├─docker.socket
●   │ ├─systemd-initctl.socket
●   │ ├─systemd-journald-dev-log.socket
●   │ ├─systemd-journald.socket
●   │ ├─systemd-shutdownd.socket
●   │ ├─systemd-udevd-control.socket
●   │ └─systemd-udevd-kernel.socket
●   ├─sysinit.target
●   │ ├─console-setup.service
●   │ ├─debian-fixup.service
●   │ ├─dev-hugepages.mount
●   │ ├─dev-mqueue.mount
●   │ ├─fake-hwclock.service
●   │ ├─kbd.service
●   │ ├─keyboard-setup.service
●   │ ├─kmod-static-nodes.service
●   │ ├─networking.service
●   │ ├─plymouth-read-write.service
●   │ ├─plymouth-start.service
●   │ ├─proc-sys-fs-binfmt_misc.automount
●   │ ├─raspi-config.service
●   │ ├─sys-fs-fuse-connections.mount
●   │ ├─sys-kernel-config.mount
●   │ ├─sys-kernel-debug.mount
●   │ ├─systemd-ask-password-console.path
●   │ ├─systemd-binfmt.service
●   │ ├─systemd-journal-flush.service
●   │ ├─systemd-journald.service
●   │ ├─systemd-modules-load.service
●   │ ├─systemd-random-seed.service
●   │ ├─systemd-sysctl.service
●   │ ├─systemd-tmpfiles-setup-dev.service
●   │ ├─systemd-tmpfiles-setup.service
●   │ ├─systemd-udev-trigger.service
●   │ ├─systemd-udevd.service
●   │ ├─systemd-update-utmp.service
●   │ ├─udev-finish.service
●   │ ├─cryptsetup.target
●   │ ├─local-fs.target
●   │ │ ├─-.mount
●   │ │ ├─boot.mount
●   │ │ ├─systemd-fsck-root.service
●   │ │ └─systemd-remount-fs.service
●   │ └─swap.target
●   └─timers.target
●     └─systemd-tmpfiles-clean.timer

Es kann sein, dass hier mal eine Abhängigkeit nicht gestartet ist, und der Dienst trotzdem funktioniert. Hier kann es dann sein, dass der Dienst so konfiguriert ist das diese Teilkomponente gerade nicht benötigt wird.

Maskierung

Maskierung im Zusammenhang mit Diensten von systemctl bedeutet, dass Dienste unbrauchbar gemacht werden. Das hat zur folge das diese Dienst weder durch einen Automatismus noch durch einen manuellen Befehl gestartet werden kann. Eine Maskierung setzt man wie folgt:

1
systemctl mask killprocs.service

Das ganze kann man sich dann auch anzeigen lassen:

1
2
3
4
5
6
7
8
9
systemctl list-unit-files
UNIT FILE                              STATE
...
initrd-udevadm-cleanup-db.service      static
kafka.service                          disabled
killprocs.service                      masked
kmod-static-nodes.service              static
kmod.service                           static
...

Dies sind nun erstmal die ersten vier Befehl die ich immer wieder in meinem Alltag mit systemctl verwende. Ich hoffe das diese dem ein oder anderen in seinem Alltag weiterhelfen kann.
Habt ihr selber nützlichen Tipps oder Tricks im Zusammenhang mit systemctl? Dann hinterlass mir doch ein kurzes Kommentar.

Kategorie: Linux Tags: Deamon, systemctl, systemd, Tipps, Tricks

Über Christian Piazzi

Ich blogge hier über alles, was mir so in meinem ITler Altag über den Weg läuft =)
Man findet mich privat bei Google+ und Twitter

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kategorien

  • Linux
  • Internet, Bloggen & Co
  • Programmierung
  • Sicherheit
  • Netzwerk & Co
  • Mikrokontroller
  • Windows

Neueste Kommentare

  • Prometheus Installation unter Ubuntu - Modius - Techblog bei Prometheus Installation unter CentOS
  • Rainer bei Docker Container – anzeigen, starten, stoppen und löschen
  • Rainer Wohlfarth bei Docker Container – anzeigen, starten, stoppen und löschen
  • Rainer Wohlfarth bei Docker Container – anzeigen, starten, stoppen und löschen
  • Rainer Wohlfarth bei Docker Container – anzeigen, starten, stoppen und löschen

Werbung

Archive

Kontakt, Datenschutz und Impressum

  • Kontakt
  • Datenschutz
  • Impressum

Schlagwörter

Anleitung Ansible Apache Apple App Store Automatisierung Blogparade C++ Centos centos 7 CentOS7 Container Datenbank DevOps Docker Dr. Racket Dr. Scheme funktional Gastartikel Google HowTo httpd Icinga2 Icinga 2 Installation itsm Linux Minecraft Monitoring mooc MySQL owncloud PHP Plugin Programmierung python Raspberry Pi Schritt für Schritt Server Sicherheit Tutorial Ubuntu Update Windows Wordpress

Copyright © 2025 · Outreach Pro on Genesis Framework · WordPress · Anmelden