<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=Systemd_Einf%C3%BChrung</id>
	<title>Systemd Einführung - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=Systemd_Einf%C3%BChrung"/>
	<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Systemd_Einf%C3%BChrung&amp;action=history"/>
	<updated>2026-07-05T15:33:55Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=Systemd_Einf%C3%BChrung&amp;diff=71703&amp;oldid=prev</id>
		<title>Thomas.will: Die Seite wurde neu angelegt: „== Systemd – Grundlagen der Systemverwaltung ==  == Was ist systemd ==  systemd ist der Init-Prozess (PID 1) moderner Linux-Systeme und damit die erste Insta…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Systemd_Einf%C3%BChrung&amp;diff=71703&amp;oldid=prev"/>
		<updated>2026-07-05T08:39:01Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „== Systemd – Grundlagen der Systemverwaltung ==  == Was ist systemd ==  systemd ist der Init-Prozess (PID 1) moderner Linux-Systeme und damit die erste Insta…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Systemd – Grundlagen der Systemverwaltung ==&lt;br /&gt;
&lt;br /&gt;
== Was ist systemd ==&lt;br /&gt;
&lt;br /&gt;
systemd ist der Init-Prozess (PID 1) moderner Linux-Systeme und damit die erste Instanz, die der Kernel nach dem Boot startet. Es ersetzt die klassischen SysV-Init-Skripte und bringt ein grundlegend anderes Konzept mit:&lt;br /&gt;
&lt;br /&gt;
;Kernpunkte&lt;br /&gt;
*'''Deklarativ statt skriptbasiert''' – Dienste werden über Unit-Files beschrieben (Was, nicht Wie), keine Shell-Skripte mehr wie bei SysV-Init&lt;br /&gt;
*'''Paralleler Start''' – Units werden basierend auf Abhängigkeiten gleichzeitig gestartet, nicht mehr sequentiell nach Runlevel-Nummer&lt;br /&gt;
*'''Socket-/D-Bus-Activation''' – Dienste starten erst bei tatsächlichem Bedarf, nicht pauschal beim Boot&lt;br /&gt;
*'''Einheitliches Konzept für mehr als nur Dienste''' – Mounts, Timer, Netzwerkgeräte, Sockets, Pfade laufen alle über dasselbe Unit-System&lt;br /&gt;
&lt;br /&gt;
;Verwaltet werden unter anderem&lt;br /&gt;
*Dienste (&amp;lt;code&amp;gt;.service&amp;lt;/code&amp;gt;)&lt;br /&gt;
*Mountpoints (&amp;lt;code&amp;gt;.mount&amp;lt;/code&amp;gt;)&lt;br /&gt;
*Geplante Aufgaben (&amp;lt;code&amp;gt;.timer&amp;lt;/code&amp;gt;, ersetzt Cron für systemd-verwaltete Aufgaben)&lt;br /&gt;
*Netzwerkgeräte (&amp;lt;code&amp;gt;.network&amp;lt;/code&amp;gt;, über systemd-networkd)&lt;br /&gt;
*Sockets (&amp;lt;code&amp;gt;.socket&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== systemctl ==&lt;br /&gt;
&lt;br /&gt;
;Grundoperationen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status sshd&lt;br /&gt;
systemctl start sshd&lt;br /&gt;
systemctl stop sshd&lt;br /&gt;
systemctl restart sshd&lt;br /&gt;
systemctl reload sshd          # Konfig neu laden ohne Neustart (falls vom Dienst unterstützt)&lt;br /&gt;
systemctl enable sshd          # beim Boot automatisch starten&lt;br /&gt;
systemctl disable sshd&lt;br /&gt;
systemctl enable --now sshd    # enable + start in einem Schritt&lt;br /&gt;
systemctl mask sshd            # Start komplett verhindern, auch manuell&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Übersicht verschaffen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl list-units --type=service          # aktive Services&lt;br /&gt;
systemctl list-unit-files --type=service      # alle bekannten Services + enabled/disabled-Status&lt;br /&gt;
systemctl list-dependencies sshd              # Abhängigkeitsbaum einer Unit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Nach Änderungen an Unit-Files&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
Targets sind Gruppierungen von Units, das systemd-Äquivalent zu klassischen Runleveln.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Target !! entspricht Runlevel !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| poweroff.target || 0 || System herunterfahren&lt;br /&gt;
|-&lt;br /&gt;
| rescue.target || 1 || Einzelbenutzermodus, minimale Umgebung&lt;br /&gt;
|-&lt;br /&gt;
| multi-user.target || 3 || Mehrbenutzerbetrieb ohne grafische Oberfläche (Standard auf Servern)&lt;br /&gt;
|-&lt;br /&gt;
| graphical.target || 5 || Mehrbenutzerbetrieb mit grafischer Oberfläche&lt;br /&gt;
|-&lt;br /&gt;
| reboot.target || 6 || Neustart&lt;br /&gt;
|-&lt;br /&gt;
| emergency.target || S || absolutes Minimum, sogar ohne Mounts – Notfall-Shell&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl get-default                     # aktuelles Standard-Target anzeigen&lt;br /&gt;
systemctl set-default multi-user.target   # Standard-Target dauerhaft ändern&lt;br /&gt;
systemctl isolate multi-user.target       # sofort in anderes Target wechseln&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== journalctl ==&lt;br /&gt;
&lt;br /&gt;
;Das Alltags-Kommando: Unit live verfolgen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
journalctl -fu sssd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Kombiniert mit Textfilter&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
journalctl -fu sssd -g &amp;quot;authentication&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Weitere Kombinationen, die im Alltag wirklich vorkommen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
journalctl -u sshd --since today&lt;br /&gt;
journalctl -u sshd --since &amp;quot;2026-07-01&amp;quot; --until &amp;quot;2026-07-02&amp;quot;&lt;br /&gt;
journalctl -b                    # nur seit letztem Boot&lt;br /&gt;
journalctl -b -1                 # vorheriger Boot&lt;br /&gt;
journalctl -p err                # nur Priorität &amp;quot;error&amp;quot; und höher&lt;br /&gt;
journalctl -k                    # nur Kernel-Meldungen (entspricht dmesg)&lt;br /&gt;
journalctl --disk-usage          # wie viel Platz belegt das Journal&lt;br /&gt;
journalctl --vacuum-time=2weeks  # alte Einträge löschen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Persistenz&lt;br /&gt;
Standardmäßig liegt das Journal nur in &amp;lt;code&amp;gt;/run/log/journal&amp;lt;/code&amp;gt; (RAM, weg nach Reboot). Für dauerhaftes Logging:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p /var/log/journal&lt;br /&gt;
systemctl restart systemd-journald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Eigene Service-Unit erstellen ==&lt;br /&gt;
&lt;br /&gt;
Klassisches Beispiel – ein einfacher Python-HTTP-Server als systemd-Dienst:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/systemd/system/webtest.service&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Einfacher Python HTTP-Server&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=/usr/bin/python3 -m http.server 8080 --directory /srv/www&lt;br /&gt;
WorkingDirectory=/srv/www&lt;br /&gt;
User=nobody&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable --now webtest.service&lt;br /&gt;
systemctl status webtest.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Wichtigste Directives im Überblick&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Directive !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| After / Requires || Reihenfolge- bzw. echte Abhängigkeit zu anderen Units&lt;br /&gt;
|-&lt;br /&gt;
| Type=simple || Standard: Prozess bleibt im Vordergrund, gilt sofort als gestartet&lt;br /&gt;
|-&lt;br /&gt;
| Type=forking || klassischer Daemon, der sich selbst forkt (z. B. traditionelle Daemons)&lt;br /&gt;
|-&lt;br /&gt;
| Restart=on-failure || automatischer Neustart bei Absturz&lt;br /&gt;
|-&lt;br /&gt;
| WantedBy=multi-user.target || legt fest, zu welchem Target die Unit bei &amp;lt;code&amp;gt;enable&amp;lt;/code&amp;gt; hinzugefügt wird&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weitere Unit-Typen ==&lt;br /&gt;
&lt;br /&gt;
;.mount – Mountpoints als Unit&lt;br /&gt;
Alternative zu &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;, wird aber meist automatisch aus fstab generiert. Eigene &amp;lt;code&amp;gt;.mount&amp;lt;/code&amp;gt;-Units sind sinnvoll bei komplexeren Abhängigkeiten (z. B. Mount erst nach einem bestimmten Service).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/systemd/system/srv-daten.mount&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Datenpartition&lt;br /&gt;
&lt;br /&gt;
[Mount]&lt;br /&gt;
What=/dev/sdb1&lt;br /&gt;
Where=/srv/daten&lt;br /&gt;
Type=xfs&lt;br /&gt;
Options=defaults&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Wichtig:''' Der Dateiname muss exakt dem Mountpoint entsprechen (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; wird zu &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;), sonst wird die Unit ignoriert.&lt;br /&gt;
&lt;br /&gt;
;.timer – ersetzt Cron für systemd-verwaltete Aufgaben&lt;br /&gt;
Ein Timer braucht immer eine gleichnamige &amp;lt;code&amp;gt;.service&amp;lt;/code&amp;gt;-Unit als Gegenstück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/systemd/system/backup.timer&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Tägliches Backup&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=*-*-* 02:00:00&lt;br /&gt;
Persistent=true&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable --now backup.timer&lt;br /&gt;
systemctl list-timers                 # alle Timer mit nächster Ausführungszeit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;.network – systemd-networkd (Alternative zu NetworkManager)&lt;br /&gt;
Auf Rocky-Systemen standardmäßig NetworkManager aktiv, aber in Containern/minimalen Images oft systemd-networkd im Einsatz. Syntax lohnt sich zu kennen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/systemd/network/10-eth0.network&lt;br /&gt;
[Match]&lt;br /&gt;
Name=eth0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
Address=192.168.1.10/24&lt;br /&gt;
Gateway=192.168.1.1&lt;br /&gt;
DNS=192.168.1.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable --now systemd-networkd&lt;br /&gt;
networkctl status&lt;br /&gt;
networkctl list&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;.socket – Socket-Activation&lt;br /&gt;
Ermöglicht, dass ein Dienst erst beim ersten eingehenden Verbindungsversuch tatsächlich gestartet wird (spart Ressourcen, klassisches Beispiel: &amp;lt;code&amp;gt;sshd.socket&amp;lt;/code&amp;gt; bei manchen Distributionen, cups.socket).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl list-sockets&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Rocky Linux Kurs]]&lt;br /&gt;
[[Kategorie:Systemverwaltung]]&lt;/div&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
</feed>