Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
admin_grundlagen:systemd [2015/07/01 16:57] ingo_wichmann [weitere Befehle] |
admin_grundlagen:systemd [2023/02/15 16:33] (aktuell) ingo_wichmann [Systemd Architektur] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== systemd ====== | ====== systemd ====== | ||
- | ===== systemd vs. SysVinit ===== | ||
- | ==== Dienste steuern ===== | ||
- | ^ Funktion ^ SysVinit ^ systemd ^ | ||
- | |dienst starten| | ||
- | service dienst start | ||
- | | | ||
- | systemctl start dienst | ||
- | | | ||
- | |dienst stoppen| | ||
- | service dienst stop | ||
- | | | ||
- | systemctl stop dienst | ||
- | | | ||
- | |dienst TERM Signal schicken| | | ||
- | systemctl kill dienst | ||
- | | | ||
- | |dienst prüfen| | ||
- | service dienst status | ||
- | | | ||
- | systemctl status dienst | ||
- | | | ||
- | |dienst neu starten| | ||
- | service dienst restart | ||
- | | | ||
- | systemctl restart dienst | ||
- | | | ||
- | |dienst neu laden| | ||
- | service dienst reload | ||
- | | | ||
- | systemctl reload dienst | ||
- | | | ||
- | |dienst beim Booten starten| | ||
- | chkconfig dienst on | ||
- | | | ||
- | systemctl enable dienst | ||
- | | | ||
- | |dienst beim Booten nicht starten| | ||
- | chkconfig dienst off | ||
- | | | ||
- | systemctl disable dienst | ||
- | | | ||
- | |Wird der dienst beim Booten gestartet?| | ||
- | chkconfig dienst | ||
- | | | ||
- | systemctl is-enabled dienst | ||
- | | | ||
- | |Abhängigkeiten anzeigen| | | ||
- | systemctl list-dependencies dienst | ||
- | | | ||
- | ==== Runlevel ==== | ||
- | ^ Kurzbefehl/Funktion ^ SysVinit ^ systemd ^ | ||
- | | | ||
- | halt | ||
- | | | ||
- | init 0 | ||
- | | | ||
- | systemctl isolate halt.target | ||
- | | | ||
- | | | ||
- | poweroff | ||
- | | | | ||
- | systemctl isolate poweroff.target | ||
- | | | ||
- | | | | ||
- | init 1 | ||
- | | | ||
- | systemctl isolate rescue.target | ||
- | | | ||
- | | | ||
- | reboot | ||
- | | | ||
- | init 6 | ||
- | | | ||
- | systemctl reboot | ||
- | | | ||
- | |||
===== erste init-Skripte ===== | ===== erste init-Skripte ===== | ||
Durch Konfigurationsdateien ersetzt. Siehe http://0pointer.de/blog/projects/the-new-configuration-files und | Durch Konfigurationsdateien ersetzt. Siehe http://0pointer.de/blog/projects/the-new-configuration-files und | ||
http://fedoraproject.org/wiki/Systemd | http://fedoraproject.org/wiki/Systemd | ||
- | ===== runlevel Start-Skripte ===== | + | ===== Units ===== |
- | Die native system Konfiguration liegt in | + | 3 Ebenen der Konfiguration von Units: |
- | * ''/lib/systemd/system/*.service'', ''/usr/lib/systemd/system/*.service'' und | + | |
- | * ''/etc/systemd/system/*.service'' | + | |
- | systemd ist aber auch weiterhin kompatibel zu den aus [[init|sysVinit]] bekannten Startskripten in | + | - ''/lib/systemd/*'' und ''/usr/lib/systemd/*'': (niedrigste Priorität) aus der Paketverwaltung, nicht anfassen. |
- | * ''/etc/init.d/'' | + | - ''/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 ==== | ==== Dienste starten und eintragen ==== | ||
Zeile 99: | Zeile 78: | ||
== systemd nativ == | == systemd nativ == | ||
systemctl enable dienst.service | systemctl enable dienst.service | ||
- | + | systemctl reenable dienst.service | |
- | == sysVinit kompatibel == | + | |
- | chkconfig dienst on | + | |
=== Dienst sofort, einmalig beenden === | === Dienst sofort, einmalig beenden === | ||
Zeile 109: | Zeile 86: | ||
== sysVinit kompatibel == | == sysVinit kompatibel == | ||
service dienst stop | 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 === | === Dienst beim Booten nicht starten === | ||
Zeile 114: | Zeile 109: | ||
systemctl disable dienst.service | systemctl disable dienst.service | ||
- | == sysVinit kompatibel == | + | === Dienst maskieren === |
- | chkconfig dienst off | + | dann kann er überhaupt nicht mehr gestartet werden |
+ | systemctl mask dienst.service | ||
+ | systemctl unmask dienst.service | ||
=== Dienste anzeigen === | === Dienste anzeigen === | ||
== systemd nativ == | == systemd nativ == | ||
systemctl list-units -t service | 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 == | == sysVinit kompatibel == | ||
service --status-all | service --status-all | ||
- | ===== journalctl ===== | ||
- | [[journald]] | ||
- | ===== weitere Befehle ===== | ||
- | von systemd verwaltete Prozesse anzeigen: | ||
- | systemd-cgls | ||
+ | === 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 | ||
+ | <file txt /etc/systemd/logind.conf> | ||
+ | KillUserProcesses=no | ||
+ | </file> | ||
+ | |||
+ | ===== Weitere Befehle und Subsysteme ===== | ||
+ | * [[Analyse]] | ||
+ | * [[Snapshots]] | ||
+ | * [[Systemd-Prozesse]] | ||
+ | * [[Systemd-Resourcenkontrolle]] | ||
+ | * [[Systemd-Security]] | ||
+ | |||
+ | == Powersave verhindern == | ||
+ | systemd-inhibit <cmd> | ||
+ | |||
+ | == 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]] |