Systemd: Unterschied zwischen den Versionen
(→Units) |
|||
| Zeile 68: | Zeile 68: | ||
|- | |- | ||
|} | |} | ||
| + | |||
| + | ===Befehl zum Anzeigen=== | ||
| + | *systemctl list-units (zum anzeigen aller Units auf einem System) | ||
| + | |||
| + | |||
| + | *systemctl list-units --type service (zum anzeigen aller Units vom Typ "Service" auf einem System) | ||
| + | <pre> | ||
| + | apport.service loaded active exited LSB: automatic crash r | ||
| + | apt-daily.service loaded activating start start Daily apt activities | ||
| + | atd.service loaded active running Deferred execution sch | ||
| + | console-setup.service loaded active exited Set console keymap | ||
| + | cron.service loaded active running Regular background pro | ||
| + | dbus.service loaded active running D-Bus System Message B | ||
| + | getty@tty1.service loaded active running Getty on tty1 | ||
| + | grub-common.service loaded active exited LSB: Record successful | ||
| + | icinga2.service loaded active running LSB: icinga2 host/serv | ||
| + | ifup@ens18.service loaded active exited ifup for ens18 | ||
| + | irqbalance.service loaded active running LSB: daemon to balance | ||
| + | iscsid.service loaded active running iSCSI initiator daemon | ||
| + | kmod-static-nodes.service loaded active exited Create list of require | ||
| + | lvm2-lvmetad.service loaded active running LVM2 metadata daemon | ||
| + | lvm2-monitor.service loaded active exited Monitoring of LVM2 mir | ||
| + | lxcfs.service loaded active running FUSE filesystem for LX | ||
| + | lxd-containers.service loaded active exited LXD - container startu | ||
| + | mdadm.service loaded active running LSB: MD monitoring dae | ||
| + | mysql.service loaded active running MySQL Community Server | ||
| + | networking.service loaded active exited Raise network interfac | ||
| + | ondemand.service loaded active exited LSB: Set the CPU Frequ | ||
| + | open-iscsi.service loaded active exited Login to default iSCSI | ||
| + | php7.0-fpm.service loaded active running The PHP 7.0 FastCGI Pr | ||
| + | polkitd.service loaded active running Authenticate and Autho | ||
| + | rc-local.service loaded active exited /etc/rc.local Compatib | ||
| + | resolvconf.service loaded active exited Nameserver information | ||
| + | rsyslog.service loaded active running System Logging Service | ||
| + | snapd.service loaded active running Snappy daemon | ||
| + | ssh.service loaded active running OpenBSD Secure Shell s | ||
| + | systemd-journal-flush.service loaded active exited Flush Journal to Persi | ||
| + | systemd-journald.service loaded active running Journal Service | ||
| + | systemd-logind.service loaded active running Login Service | ||
| + | systemd-modules-load.service loaded active exited Load Kernel Modules | ||
| + | systemd-random-seed.service loaded active exited Load/Save Random Seed | ||
| + | systemd-remount-fs.service loaded active exited Remount Root and Kerne | ||
| + | systemd-sysctl.service loaded active exited Apply Kernel Variables | ||
| + | systemd-timesyncd.service loaded active running Network Time Synchroni | ||
| + | systemd-tmpfiles-setup-dev.service loaded active exited Create Static Device N | ||
| + | systemd-tmpfiles-setup.service loaded active exited Create Volatile Files | ||
| + | systemd-udev-trigger.service loaded active exited udev Coldplug all Devi | ||
| + | systemd-udevd.service loaded active running udev Kernel Device Man | ||
| + | systemd-update-utmp.service loaded active exited Update UTMP about Syst | ||
| + | systemd-user-sessions.service loaded active exited Permit User Sessions | ||
| + | ufw.service loaded active exited Uncomplicated firewall | ||
| + | user@0.service loaded active running User Manager for UID 0 | ||
| + | </pre> | ||
= Administration = | = Administration = | ||
Version vom 8. September 2016, 12:35 Uhr
systemd ist ein Ersatz für den System V init Daemon in Linux.
Besonderheiten
- Abwärtskompatibilität zu SysVinit-Scripten
- systemd ist abwärtskompatibel, jedoch werden Features benutzt, welche nur unter Linux verfügbar sind.
- Somit ist er nur auf Systemen mit Linux-Kernel lauffähig.
- Parallelisierung
- Es werden möglichst viele Prozesse gleichzeitig beim Booten gestartet um das System optimal aus zulasten.
- Abhängigkeits-Regeln
- Um bei der Parallelisierung dennoch sicher zustellen dass Dienste welche von anderen Diensten benötigt werden rechtzeitig vor diesen zu starten. (z.B. D-Bus)
- cgroups
- Anstelle von ProzessIDs werden cgroups benutzt. Dies bedeutet, dass Dienste nicht mehr "Abhauen" können. Selbst durch doppeltes Forken.
- Ereignis basiertes Starten von Diensten
- Ähnlich inetd kann systemd Dienste bei Bedarf starten.
- Dies kann z.B. über einen Socket oder Bus geschehen.
- Binärscripte
- Langfristig sollen Shell-Skripte komplett verschwinden und anstelle eines Init-Skripts jeder Dienst eine Konfigurationsdatei erhalten in welcher definiert wird wie dieser zu starten ist.
- Kommandos
- Bei Sys-V-init laufen Dienste immer im Hintergrund als Daemon. Bei Systemd wird erwartet, dass der Prozess hinter exec im Vordergrund läuft. Nur so lange der Prozess im Vordergrund durchgeführt wird betrachtet Systemd ihn auch als laufend. Endet der mit exec gestarter Prozess, so endet für Systemd auch der Service und dieses wartet nun darauf, dass wieder ein passendes Traget auftritt.
- Prozesse beenden
- Beim Stoppen eines Jobs kümmert sich Systemd ausschließlich um den per exec im Vordergrund gestarteten Prozess. Er sendet ein SIGTERM und erwartet, dass er sich selbst beendet. Falls er dies jedoch nicht tut wird er mittels SIGKILL einfach abgebrochen.
Verfügbarkeit (01/2015)
| Distribution | Status |
|---|---|
| Fedora | Fedora seit version 15 Standard |
| openSUSE | openSUSE seit 12.1 Standard |
| Mandriva | seit Mandriva 2011 Standart |
| Debian | seit debian 8 jessie Standart |
| Ubuntu | seit 15.04 |
| Arch | seit Oktoper 2012 |
| Red Hat | seit version 7 |
systemd wurde als externe Abhängigkeit für GNOME 3.2 vorgeschlagen.
Units
Systemd wird über Dateien mit einem INI-Datei ähnlichen Format konfiguriert. In der Terminologie von systemd sind dies "Units". Bei Ubuntu vorinstallierte Units sind im Ordner /lib/systemd/system/ gespeichert. Falls sich jedoch eine Unit mit gleichem Namen im Verzeichnis /etc/systemd/system/ befindet, so wird diese bevorzugt und jene unterhalb von /lib ignoriert. Damit hat man die Möglichkeit, eine Unit an eigene Gegebenheiten anzupassen, ohne dass man befürchten muss, dass sie bei einer Systemaktualisierung überschrieben wird. Es existieren verschiedene Typen von Units, die von systemd je nach Endung des Dateinamens unterschiedlich behandelt werden:
| Typ | Beschreibung |
|---|---|
| .device | Legt Gerätedateien an |
| .mount | Ein- und Aushängen von Dateisystemen |
| .path | Startet die Unit via inotify |
| .service | Für Dienste |
| .socket | Stellt Verbindungen zwischen Prozessen her |
| .target | Definiert eine Gruppe von Units |
| .timer | Für wiederkehrende Aufgaben, ähnlich cron-Jobs |
Befehl zum Anzeigen
- systemctl list-units (zum anzeigen aller Units auf einem System)
- systemctl list-units --type service (zum anzeigen aller Units vom Typ "Service" auf einem System)
apport.service loaded active exited LSB: automatic crash r apt-daily.service loaded activating start start Daily apt activities atd.service loaded active running Deferred execution sch console-setup.service loaded active exited Set console keymap cron.service loaded active running Regular background pro dbus.service loaded active running D-Bus System Message B getty@tty1.service loaded active running Getty on tty1 grub-common.service loaded active exited LSB: Record successful icinga2.service loaded active running LSB: icinga2 host/serv ifup@ens18.service loaded active exited ifup for ens18 irqbalance.service loaded active running LSB: daemon to balance iscsid.service loaded active running iSCSI initiator daemon kmod-static-nodes.service loaded active exited Create list of require lvm2-lvmetad.service loaded active running LVM2 metadata daemon lvm2-monitor.service loaded active exited Monitoring of LVM2 mir lxcfs.service loaded active running FUSE filesystem for LX lxd-containers.service loaded active exited LXD - container startu mdadm.service loaded active running LSB: MD monitoring dae mysql.service loaded active running MySQL Community Server networking.service loaded active exited Raise network interfac ondemand.service loaded active exited LSB: Set the CPU Frequ open-iscsi.service loaded active exited Login to default iSCSI php7.0-fpm.service loaded active running The PHP 7.0 FastCGI Pr polkitd.service loaded active running Authenticate and Autho rc-local.service loaded active exited /etc/rc.local Compatib resolvconf.service loaded active exited Nameserver information rsyslog.service loaded active running System Logging Service snapd.service loaded active running Snappy daemon ssh.service loaded active running OpenBSD Secure Shell s systemd-journal-flush.service loaded active exited Flush Journal to Persi systemd-journald.service loaded active running Journal Service systemd-logind.service loaded active running Login Service systemd-modules-load.service loaded active exited Load Kernel Modules systemd-random-seed.service loaded active exited Load/Save Random Seed systemd-remount-fs.service loaded active exited Remount Root and Kerne systemd-sysctl.service loaded active exited Apply Kernel Variables systemd-timesyncd.service loaded active running Network Time Synchroni systemd-tmpfiles-setup-dev.service loaded active exited Create Static Device N systemd-tmpfiles-setup.service loaded active exited Create Volatile Files systemd-udev-trigger.service loaded active exited udev Coldplug all Devi systemd-udevd.service loaded active running udev Kernel Device Man systemd-update-utmp.service loaded active exited Update UTMP about Syst systemd-user-sessions.service loaded active exited Permit User Sessions ufw.service loaded active exited Uncomplicated firewall user@0.service loaded active running User Manager for UID 0
Administration
Runlevel / Targets
| SystemVinit Runlevel | Systemd Target | Kommentar |
|---|---|---|
| 0 | runlevel0.target, poweroff.target | System herunterfahren |
| 1, s, single | runlevel1.target, rescue.target | Einzelnuzer Modus |
| 2, 4 | runlevel2.target, runlevel4.target, multi-user.target | Benuzerdefiniert, Standardmäsig identisch zu 3 |
| 3 | runlevel3.target, multi-user.target | Multi-user, Shell. Anmeldung über mehrere Consolen und7oder netzwerk |
| 5 | runlevel5.target, graphical.target | Multi-user, Grafisch. Gewöhnlich alle Dienste aus 3 sowie grafische Oberfläche |
| 6 | runlevel6.target, reboot.target | Reboot |
| emergency | emergency.target | Notfall Shell |
systemctl
aktivieren/deaktivieren systemstart
- systemctl enable
- systemctl disable
service steuern
- systemctl start
- systemctl stop
- systemctl status
- systemctl reload
- systemctl restart
service files anzeigen
- systemctl list-units
- systemctl list-unit-files
rechner herunterfahren
- systemctl isolate halt
Service File
Beispiel:
- /etc/systemd/system/firewall.service
Description=firewall After=network.target syslog.target [Service] RemainAfterExit=yes ExecStart=/usr/local/sbin/firewall start ExecStop=/usr/local/sbin/firewall stop User=root [Install] WantedBy=multi-user.target
Änderungen
Nach Änderungen
- systemctl daemon-reload
journalctl
systemd verwendet standardmäßig ein zentrales Protokoll bzw. Journal, in das von journald alle Logmeldungen geschrieben werden. Zur Abfrage des Journals dient der Befehl journalctl.
Bootlogs
- journalctl -b
Journal vom 1 September bis zum 2. September 3 Uhr
- journalctl --since "2016-09-01" --until "2016-09-02 03:00"
FAQ
- Wie setze ich das Runlevel beim Booten?
- Unter systemd werden Runlevel als Targets bezeichnet. Um das Boot "Target" beim Booten zu setzen hängt man z.B. einen der folgenden Kernel Parameter an.
systemd.unit=multi-user.target(entspricht Runlevel 3)systemd.unit=rescue.target(entspricht Runlevel 1)
- Wie setze ich das Standard Target?
- Für Runlevel 3
# systemctl -f enable multi-user.target
- Für Runlevel 5
# systemctl -f enable graphical.target
Links
- http://de.wikipedia.org/wiki/systemd
- http://en.wikipedia.org/wiki/systemd
- https://wiki.archlinux.org/index.php/Systemd
- http://www.heise.de/open/artikel/Das-Init-System-Systemd-Teil-1-1563259.html?artikelseite=4
- https://www.digitalocean.com/community/tutorials/how-to-use-journalctl-to-view-and-manipulate-systemd-logs