LINUX

Das universelle Betriebssystem

Eine Einführung - Teil 8

Deutsche Angestellten Akademie

Systemverwaltung

Begriff: daemon

Ein Systemdienst der automatisch startet und ohne Eingriffe arbeitet ( meistens :-) )

vgl. Dienste unter Windows

Name endet oft mit „d“

  • systemd - ...
  • sshd - SSH Server Daemon
  • dockerd - docker daemon
  • smbd - SAMBA File Server
  • ntpd - Network Time Protocal Daemon
  • atd - at Daemon

Begriff: Runlevel

Runlevel Beschreibung
0 Shutdown. Alle Netzverbindungen werden geschlossen, Dateipuffer werden geschrieben, Mounts auf Partitionen werden entfernt (d. h. die im Verzeichnisbaum eingebundenen Datenträger werden ausgehängt).
S Single-User-Runlevel; niedrigster Systemzustand für Wartungsarbeiten, in dem ausschließlich Systemressourcen wie Festplatten oder Dateisysteme aktiv sind.
1 Einzelnutzerbetrieb ohne Netzwerk mit ausschließlich lokalen Ressourcen. In vielen Implementierungen identisch mit 'S'.
2 Lokaler Mehrnutzerbetrieb ohne Netzwerk mit ausschließlich lokalen Ressourcen. Unter einigen Linuxdistributionen (z. B. Debian) wird in Runlevel 2 auch das Netzwerk konfiguriert.
3 Netzwerkbetrieb, über das Netzwerk erreichbare Ressourcen sind nutzbar, eine grafische Oberfläche steht nicht zur Verfügung. Firewalls sollten aktiviert werden.
4 Ist normalerweise nicht definiert. Kann aber für diverse Dienste genutzt werden.
5 Wie 3, zusätzlich wird die grafische Oberfläche bereitgestellt.
6 Reboot. Alle Netzverbindungen werden geschlossen, Dateipuffer werden geschrieben, Mounts auf Partitionen werden entfernt.

Part 5 - systemd

  • Relativ neu
  • bricht mit alter Linux Philosophie:
    -- do one thing and do it well --
  • Sysvinit funktioniert über Shell Scripte, die nacheinander abgearbeitet werden
  • Systemd ist schneller - startet Dienste parallel
  • Kritik : übernimmt sehr viel Kontrolle - single point of failure
  • zB Gnome3 ist abhängig von systemd
  • -->Abspaltungen: Devuan - nutzt weiterhin Sysvinit
  • Standard in : Debian RedHat Suse Ubuntu

systemd ist organisiert mit

  • units - einzelne Dienste
  • targets - Gruppen von Diensten, Systemzustände
    • entspr. runlevel unter Sysvinit

Dateien:

/lib/systemd/system/ -> default

/etc/systemd/system/ -> custom

Informationen anzeigen

  • Systemstatus anzeigen:
    systemctl status
  • Liste der fehlgeschlagenene Units
    systemctl --failed
  • Liste aller installierter Units
    systemctl list-unit-files

Dienste Steuern

  • Laufende Dienste anzeigen:
    systemctl
  • Eine Unit starten
    systemctl start DIENST
  • Eine Unit neu starten
    systemctl restart DIENST
  • Unit Status anzeigen
    systemctl status DIENST
  • Dienst Autostart anschalten
    systemctl enable DIENST
  • Dienst Autostart anschalten und sofort starten
    systemctl enable --now DIENST

Eine unit

[Unit]
Description=OpenBSD Secure Shell server
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Service]
EnvironmentFile=-/etc/default/ssh
ExecStartPre=/usr/sbin/sshd -t
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/usr/sbin/sshd -t
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify
RuntimeDirectory=sshd
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target
Alias=sshd.service
		
Aufgabe: Erstellt eine Unit und startet sie.
/etc/systemd/system/simple-webserver.service
[Unit]
Description=Simple Web Server

[Service]
Type=simple
ExecStart=/home/USERNAME-HIER-EINSETZEN/hello-web.sh

[Install]
WantedBy=multi-user.target

						
~/hello-web.sh
#!/bin/bash 
cd /home/
python3 -m http.server 8082 
systemctl start simple-webserver.service
systemctl status simple-webserver.service
Wenn das gescheitert sein sollte:
journalctl -xe 
journalctl --unit=simple-webserver.service 
Browser öffnen: http://localhost:8082/BENUTZERNAME

Ändern der Standard-Units

  • systemctl edit unit
  • Öffnet /etc/systemd/system/unit.d/override.conf
  • UnDo:
    systemctl revert unit

Ensprechenungen der alten Runlevel und der neuen Targets

SysV Runlevel systemd Target Notes
0 runlevel0.target, poweroff.target Halt the system.
1, s, single runlevel1.target, rescue.target Single user mode.
2, 4 runlevel2.target, runlevel4.target, multi-user.target User-defined/Site-specific runlevels. By default, identical to 3.
3 runlevel3.target, multi-user.target Multi-user, non-graphical. Users can usually login via multiple consoles or via the network.
5 runlevel5.target, graphical.target Multi-user, graphical. Usually has all the services of runlevel 3 plus a graphical login.
6 runlevel6.target, reboot.target Reboot
emergency emergency.target Emergency shell
Ausserdem:
  • mount -> systemd kann Dateisysteme mounten
  • timer -> systemd kann cron ersetzen

journalctl

Das logging system moderner Linux Distributionen.

systemctl

Part 5 - daemons

Part 6 - Uhrzeit und Datum

Part 7 - Startup / Shutdown

Der Boot-Ablauf mit systemd

Das initramfs ist ein komprimiertes Archiv, das für den Systemstart benötigte Dateien enthält.