====== 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]]