Systemd - Die Steuerzentrale von Linux

Alles rund um das System Linux
Benutzeravatar
robertgoedl
Administrator
Beiträge: 904
Registriert: Sa 10. Jul 2021, 01:47
Wohnort: Graz
Has thanked: 37 times
Been thanked: 453 times
Kontaktdaten:

Systemd - Die Steuerzentrale von Linux

Beitrag von robertgoedl »

In älteren Zeiten wurde Linux vom sogenannten Init-System gestartet - dies hatte einen Nachteil - jeder zu startende Dienst wurde der Reihe nach, einer nach dem anderen gestartet. Dies kostete natürlich vor allem beim Start des Systems Zeit. Mit Systemd änderte sich dies - dieses neue Init-System startet mehrere Dienste zur selben Zeit und das System startet um vieles schneller.

Für manche ist Systemd jedoch auch ein Nachteil - so kontrolliert Systemd um einiges mehr als nur die Prozesse beim Start des Systems und beim Herunterfahren. Unter anderem werden auch die Logs von Systemd gesteuert. Manche meinen eben, es sollte nicht zu viel von einem einzigen Dienst gesteuert werden.

Es ist freie Software - es wird von den meisten Linux-Systemen genutzt, also nutzen wir es. Hier die wichtigsten Dinge die Sie mit Systemd anstellen können. Wichtig - soweit nicht anders angegeben werden alle Befehle mit administrativen Rechten ausgeführt.

Alle Dienste anzeigen

Alle laufenden Dienste werden als Units bezeichnet, angezeigt werden diese mit dem Befehl:

Code: Alles auswählen

systemctl list-units
systemd.jpg
Die Ausgabe kann sehr lange sein, mit den Pfeiltasten scrollen Sie sich durch die Liste - mit der Taste q wird beendet. Die Tabelle zeigt folgende Informationen:
  • UNIT - Der komplette Name
  • LOAD - Geladen oder nicht
  • ACTIVE - Aktuell aktiv oder nicht
  • SUB - Zeigt den untergeordneten Status an
  • DESCRIPTION - Eine kurze Beschreibung
Nun gibt es folgende Arten von Units:
  • service - Dienste
  • mount - Hängt Partitionen ein und aus
  • device - Erstellt Gerätedateien
  • path - Änderungen an Dateien
  • network - Netzwerk (erweiterte Einstellungen)
  • socket - Verbindungen zwischen Prozessen
  • target - Gruppen von Units
  • timer - Über Systemd gesteuerte Automatisierung
Dienste anzeigen

Die wichtigsten Dinge, die uns interessieren werden sind, die laufenden oder auch nicht laufenden Dienste - also "services"

Code: Alles auswählen

systemctl --type=service
systemd1.jpg
Hiermit werden uns alle laufenden und nicht laufenden Dienste angezeigt. Auch hier werden die Pfeiltasten zum Scrollen genutzt, zum Beenden der Ausgabe die Taste q. Die Tabelle zeigt dieselben Informationen.

Eher unwichtig - aber manchmal auch doch interessant - Sie können sich natürlich auch die Abhängigkeiten von Diensten anzeigen lassen, etwa für den Dienst "accounts-daemon.service":

Code: Alles auswählen

systemctl list-dependencies accounts-daemon.service
systemd3.jpg
Dienste aktivieren und deaktivieren

Nicht benötigte Dienste müssen nicht unbedingt beim Start des Systems automatisch starten - man kann diese auch manuell starten. Hat man beispielsweise den Apache-Webserver installiert und nutzt diesen nur hin und wieder zur Entwicklung von Webseiten muss dieser nicht dauerhaft laufen, sondern nur dann wenn man ihn auch braucht. Nehmen wir in diesem Fall den Service "apache.service" - um den automatischen Start zu deaktivieren:

Code: Alles auswählen

systemctl disable apache.service
Möchten Sie den automatischen Start wieder aktivieren:

Code: Alles auswählen

systemctl enable apache.service
Den Status eines Dienstes genauer anzeigen

Nähere Informationen über den Status eines Dienstes lassen Sie sich mit folgendem Befehl anzeigen - in diesem Fall mit dem Dienst "accounts-daemon.service":

Code: Alles auswählen

systemctl status accounts-daemon.service
systemd2.jpg
Dienste manuell starten und stoppen

Nicht automatisch gestartete Dienste lassen sich natürlich manuell starten und stoppen, in diesem Beispiel mit dem Dienst "mariadb.service":

Starten:

Code: Alles auswählen

systemctl start mariadb.service
Stoppen:

Code: Alles auswählen

systemctl stop mariadb.service
Neu starten:

Code: Alles auswählen

systemctl restart mariadb.service
Das System steuern

Mit folgenden Befehlen lässt sich das System:

Herunterfahren:

Code: Alles auswählen

systemctl poweroff.target
Neu starten:

Code: Alles auswählen

systemctl reboot.target
In Bereitschaft versetzen:

Code: Alles auswählen

systemctl suspend.target
In den Ruhezustand versetzen:

Code: Alles auswählen

systemctl hibernate.target
In den Runlevel 3 versetzen (keine grafische Oberfläche):

Code: Alles auswählen

systemctl multi-user.target
In den Runlevel 5 versetzen (Grafische Oberfläche):

Code: Alles auswählen

systemctl graphical.target
In den Rettungsmodus versetzen - Runlevel 1 (ohne grafische Oberfläche):

Code: Alles auswählen

systemctl rescue.target
Log-Dateien anzeigen

Auch um die Log-Dateien kümmert sich Systemd - hierzu nutzen Sie den Befehl:

Code: Alles auswählen

journalctl
Mit der Option "-b" lassen Sie sich die Log-Dateien seit dem letzten Start anzeigen:

Code: Alles auswählen

journalctl -b
systemd4.jpg
Mit der Option "-k" lassen Sie sich nur die Meldungen des Kernels anzeigen - entspricht dem Befehl "dmesg":

Code: Alles auswählen

journalctl -k
systemd5.jpg
Mit der Option "-f" lassen Sie sich die aktuellen Log-Meldungen anzeigen, mit Strg+c lässt sich die Ausgabe beenden:

journalctl -f
systemd6.jpg
Um sich ältere Log-Dateien anzuzeigen haben Sie mehrere Möglichkeiten, lassen Sie sich als Erstes alle Systemstarts anzeigen:

Code: Alles auswählen

journalctl --list-boots
systemd7.jpg
In der Ausgabe finden Sie ganz hinten Datum und Uhrzeit des Stars, ganz vorne eine Ziffer - diese Ziffer nutzen Sie nun, um sich die Meldungen dieser Sitzung anzeigen zu lassen. Als Beispiel mit der "6":

Code: Alles auswählen

journalctl -b 6
Mit der Option "--since=Datum" lassen Sie sich die Meldungen ab diesem Datum anzeigen - etwa (JJJJ-MM-TT HH:MM:SS):

Code: Alles auswählen

journalctl --since=2021-08-03 12:00:00
Start-Analyse mit Systemd

Mittels Systemd lässt sich natürlich auch herausfinden, warum das System länger beim Starten braucht. Für diese Befehle brauchen Sie keine administrativen Rechte. Mit:

Code: Alles auswählen

systemd-analyze
erhalten Sie eine kurze Angabe über die Startzeit des Systems:
systemd8.jpg

Code: Alles auswählen

systemd-analyze blame
Zeigt wiederum die Startzeit aller Units:
systemd9.jpg
Zuletzt zeigt ein:

Code: Alles auswählen

systemd-analyze critical-chain
die Startzeit inklusive Abhängigkeiten:
systemd10.jpg
Eine grafische erhalten Sie mit dem Befehl:

Code: Alles auswählen

systemd-analyze plot > bootchart.svg
Hiermit erhalten Sie eine SVG-Datei, die Sie im Webbrowser öffnen können, gespeichert wird diese im Verzeichnis in dem Sie sich am Terminal gerade befinden:
systemd11.jpg
Windows lässt sich mit einem U-Boot vergleichen - mach ein Fenster auf und die Probleme beginnen ...
rockyracoon
Beiträge: 115
Registriert: Sa 10. Jul 2021, 12:36
Has thanked: 18 times
Been thanked: 18 times

Re: Systemd - Die Steuerzentrale von Linux

Beitrag von rockyracoon »

@Robert:
Vielen Dank für diese ausführlichen Informationen zu "Systemd".
Die hitzigen Diskussionen über Systemd mit Flames und Forks hatte ich nicht verstanden, weil ich überhaupt den technischen Hintergrund nicht richtig verstanden hatte.

Ähnliche Innovations-Diskussionen erlebe ich bezüglich "Wayland", wobei ich hier aber ein klares Wissen und eine klare Meinung habe: "Wayland Rules".
Der Hauptgrund, weshalb ich z.B. Gnome3 verwende, ist übrigens "Wayland".

Btw: Mittlerweile habe ich mich an das neue Design Deiner Seite gewöhnt und erlebe mehr "Publikumsverkehr" und "Community". thx!
GraphicsPower
Beiträge: 101
Registriert: So 1. Aug 2021, 12:21
Has thanked: 16 times
Been thanked: 20 times

Re: Systemd - Die Steuerzentrale von Linux

Beitrag von GraphicsPower »

rockyracoon hat geschrieben: Di 3. Aug 2021, 13:39 Die hitzigen Diskussionen über Systemd mit Flames und Forks hatte ich nicht verstanden, weil ich überhaupt den technischen Hintergrund nicht richtig verstanden hatte.
Diese Debatte wurde und wird weltweit geführt und das auch zurecht. Es genügt schon allein zu wissen wie dieser Konflikt überhaupt entstanden ist, der technische Hintergrund dazu ist nur ein weiteres Thema in der Angelegenheit. Auch die internationale Gemeinschaft bei Debian wurde durch diesen Konflikt am Ende gespalten, was zur Folge hatte, daß eine ganze Armee von Programmierern das Projekt verlassen hat und nun ihre eigene Distro Devuan ohne Systemd zur Verfügung stellt und auch eine ganze Liste weiterer Distros auf Systemd verzichtet.

Es begann damit, daß Linus Torwalds einen der für den Kernel zuständigen Programmierer Kay Sievers aus dem Team geworfen hatte, weil er ihm nicht mehr vertrauen konnte, da seine Patches durch Schlamperei und Rücksichtslosigkeit laufend zu massiven Problemen führten. Der Aufbau von Systemd war die Folge davon. Massive Kritik kam auch von Eric S. Raymond, was 2014 zu einem weltweiten Boykottaufruf führte und eine lange Liste an Vorwürfen und Begründungen danach publiziert wurde. Unter anderem wurde auch ein Bruch mit den Grundprinzipien von Linux und UNIX angeprangert. Einer der prominentesten Kritiker ist dabei der Software Experte Theodore Ts'o, der die Designphilosophie von Linux hier weitläufig gefährdet sieht und dabei auch Parallelen zum aus ähnlichen Gründen kritisierten Gnome-Projekt aufzeigt. Einer weiteren Kritik sieht sich die Nummer 2 bei Systemd Lennart Poettering ausgesetzt, dem die gleiche präpotente Haltung und Egomanie vorgeworfen wird, da er 2013 versucht hatte sämtliche Kritikpunkte als reine "Mythen" darzustellen, was ihn bis heute belastet.

Der technische Hintergrund definiert sich bei kritischer Betrachtung als schmerzhafte Einschränkung für Entwickler und Programmierer, die nun zu Anpassungen gezwungen werden, die sich alle nun auf der Schiene von Systemd bewegen und zu einem Verlust an Freiheit in der Gestaltung freier Software führt. Auch wenn Systemd nun manches vereinfacht und beschleunigt, so war es dennoch nur ein weiterer Schritt in die bereits laufende Kommerzialisierung eines einst wirklich freien Betriebssystems. Systemd ist bei weitem nicht das Gelbe vom Ei, aber man kann damit leben solange sich keine spürbaren Nachteile für den Anwender ergeben. Ich hoffe nur, daß Linus Torwalds noch lange aktiv bleibt, um seinen Kernel gegen solche Machenschaften zu schützen!
Gesperrt Vorheriges ThemaNächstes Thema