====== systemd ======
===== erste init-Skripte =====
Durch Konfigurationsdateien ersetzt. Siehe http://0pointer.de/blog/projects/the-new-configuration-files und
http://fedoraproject.org/wiki/Systemd
===== Units =====
3 Ebenen der Konfiguration von Units:
- ''/lib/systemd/*'' und ''/usr/lib/systemd/*'': (niedrigste Priorität) aus der Paketverwaltung, nicht anfassen.
- ''/run/systemd/*'': dynamisch von systemd erzeugt
- ''/etc/systemd/*'': (höchste Priorität) Hier dürfen sich Admins austoben
Unit-Files:
* Defaults der Distribution
* ''{/usr,}/lib/systemd/system/...''
* ''{/usr,}/lib/systemd/system/….d/*.conf''
* Voreinstellungen, siehe ''man systemd.preset''
* ''{/usr,}/lib/systemd/system-preset/''
* temporär, dynamisch von systemd erzeugt
* ''/run/systemd/...''
* ''/run/systemd/….d/*.conf''
* Hier dürfen sich Admins austoben
* ''/etc/systemd/system/...''
* ''/etc/systemd/system/….d/*.conf''
Übersicht Unit-Files:
systemctl list-unit-files
Übersicht Dienste:
systemctl list-unit-files --type service
systemd ist aber auch weiterhin kompatibel zu den aus [[init|sysVinit]] bekannten Startskripten in ''/etc/init.d/''
==== Systemd Architektur ====
=== ctl-Befehle ===
* ''systemd-hostnamed'' --> ''hostnamectl''
* ''systemd-machined'' --> ''machinectl''
* ''systemd-journald'' --> ''journalctl''
* ''systemd-localed'' --> ''localectl''
* ''systemd-logind'' --> ''loginctl''
* ''systemd-shutdownd'' --> ''shutdown''
* ''systemd-timedated'' --> ''timedatectl''
* ''bootctl''
* ''busctl''
* ''networkctl''
* ''resolvectl''
=== Systemd Unit Arten ===
* service: von Systemd gestartete Anwendungen
* socket: Socket Aktivierung
* scopes: ausserhalb von systemd gestartete Anwendungen
* slice: Resourcen für Prozessgruppen
* path: Pfad Aktivierung
* mount: Mountpoints (teilweise aus ''/etc/fstab'')
* automount: automatische Mountpoints
* target: Gruppen von Units
* timer: Service-Units zeitgesteuert starten
=== Standard Target ===
== Das Standard-Boot-Target ändern ==
systemctl set-default graphical.target
== Das Standard-Boot-Target anzeigen ==
systemctl get-default
oder
readlink /etc/systemd/system/default.target
==== Dienste starten und eintragen ====
=== Dienst sofort, einmalig starten ===
== systemd nativ ==
systemctl start dienst.service
== sysVinit kompatibel ==
service dienst start
=== Dienst immer beim Booten starten ===
== systemd nativ ==
systemctl enable dienst.service
systemctl reenable dienst.service
=== Dienst sofort, einmalig beenden ===
== systemd nativ ==
systemctl stop dienst.service
== sysVinit kompatibel ==
service dienst stop
=== Dienst restart ===
== systemd nativ ==
systemctl restart dienst.service
== Nur starten, wenn der Dienst bereits aktiv ist ==
systemctl try-restart dienst.service
== sysVinit kompatibel ==
service dienst restart
=== Dienst neu laden ===
== systemd nativ ==
systemctl reload dienst.service
systemctl reload-or-restart dienst.service
systemctl reload-or-try-restart dienst.service
== sysVinit kompatibel ==
service dienst reload
=== Dienst beim Booten nicht starten ===
== systemd nativ ==
systemctl disable dienst.service
=== Dienst maskieren ===
dann kann er überhaupt nicht mehr gestartet werden
systemctl mask dienst.service
systemctl unmask dienst.service
=== Dienste anzeigen ===
== systemd nativ ==
systemctl list-units -t service
systemctl list-units --type service --state=failed --all
systemctl list-unit-files -t service
systemctl is-enabled dienst.service
systemctl is-active dienst.service
== sysVinit kompatibel ==
service --status-all
=== Targets ===
== auflisten ==
systemctl --type=target
== isolieren ==
alle anderen Targets beenden
systemctl isolate rescue.target
systemctl rescue
systemctl emergency
systemctl single
systemctl halt
systemctl poweroff
systemctl reboot
systemctl suspend
systemctl hibernate
systemctl hybrid-sleep
== alle Units (Serices, ...) eines Targets anzeigen ==
systemctl list-dependencies graphical.target
===== Startoptionen eines Dienstes ändern =====
cp -a /lib/systemd/system/dienst.service /etc/systemd/system/
vim /etc/systemd/system/dienst.service
Besser
systemctl edit dienst.service
oder (für eigene units)
systemctl edit --full dienst.service
Syntax prüfen:
systemd-analyze verify dienst.service
Änderungen anzeigen:
systemd-delta
Änderungen aktivieren (nicht notwendig bei ''edit'')
systemctl daemon-reload
Dienst neu starten:
systemctl restart dienst
===== Journald =====
* [[journald]]
===== Logind =====
systemd version 230:
Now you can no longer expect a long running background processes to
continue after logging out. I believe this breaks the expecations of
many users. For example, you can no longer start a [[screen]] or [[tmux]]
session, log out, and expect to come back to it.
compiling systemd with ''--without-kill-user-processes'' or by setting
KillUserProcesses=no
===== Weitere Befehle und Subsysteme =====
* [[Analyse]]
* [[Snapshots]]
* [[Systemd-Prozesse]]
* [[Systemd-Resourcenkontrolle]]
* [[Systemd-Security]]
== Powersave verhindern ==
systemd-inhibit
== Virtualisierung erkennen ==
systemd-detect-virt
==== *.ctl ====
* [[loginctl]]
* [[localectl]]
* [[hostnamectl]]
* [[timedatectl]]
===== Beispiele =====
* [[Systemd Service Unit Files]]
* [[Systemd Path Unit Files]]
===== Doku =====
* [[https://www.freedesktop.org/wiki/Software/systemd/|Offizielle Doku auf freedesktop]]
* [[http://0pointer.net/blog/|PID 1 Blog von Poettering (nicht verbindlich)]]
----
* [[https://cre.fm/cre209-das-linux-system|CRE Interview mit Lennart]]