Systemd: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
David (Diskussion | Beiträge) |
David (Diskussion | Beiträge) |
||
| Zeile 75: | Zeile 75: | ||
*systemctl list-units | *systemctl list-units | ||
*systemctl list-unit-files | *systemctl list-unit-files | ||
| + | |||
| + | ==Service File== | ||
| + | Beispiel: | ||
| + | |||
| + | [Unit] | ||
| + | Description=firewall #name des ervice | ||
| + | After=syslog.target network.target # startet nach disem target | ||
| + | |||
| + | [Service] | ||
| + | ExecStart=/etc/systemd/system/firewall.service start # ausführen beim start | ||
| + | ExecStart=/etc/systemd/system/firewall.service stop # ausführen beim stoppen | ||
| + | Restart=on-abort #bei fehler neustarten | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.targ # ab welchem betriebszustand des systems der service geladen wird | ||
Version vom 5. Januar 2016, 13:34 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.
Verfügbarkeit (08/2011)
| 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.
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
Service File
Beispiel:
[Unit] Description=firewall #name des ervice After=syslog.target network.target # startet nach disem target [Service] ExecStart=/etc/systemd/system/firewall.service start # ausführen beim start ExecStart=/etc/systemd/system/firewall.service stop # ausführen beim stoppen Restart=on-abort #bei fehler neustarten [Install] WantedBy=multi-user.targ # ab welchem betriebszustand des systems der service geladen wird
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