systemd

Aus wiki.archlinux.de

systemd ist der Init-Prozess von Arch Linux. Dieser startet, überwacht, und beendet alle weiteren Services, und ist für das Loggen von Servicerückmeldungen und Benutzerinteraktionen zuständig. Zudem verwaltet systemd die mounts, und beherrscht die Abhängigkeitsauflösung beim Starten von zusätzlichen Services. Zusätzlich wird mit systemd-boot ein Bootloader mitgeliefert.

Installation

systemd gehört unter Arch zur Standard-Installation und muss nicht explizit installiert werden.

Konfiguration

Über mehrere Konfigurationsdateien in /etc/systemd können die Eigenschaften von systemd vorgegeben werden. Über gleichnamige Manpages bekommt man ausführliche Informationen zu den einzelnen Optionen in den jeweiligen Konfigurationsdateien.

In /etc/systemd/system kann man eigene Service-Dateien ablegen. Dies sind Konfigurationsdateien im INI-Format, anhand derer von systemd verwaltbare Services erstellt werden können.

Systemkonfiguration

Folgende Dateien und systemd-Programme und -Services werden für die Systemkonfiguration bei der Verwendung von systemd benutzt.

Datei systemd-Programm Verwendungszweck
systemctl Administration und Prüfung der verwendeten Services
journalctl Logeinträge prüfen
/etc/hostname hostnamectl Festlegen des Computer-Namens im Netzwerk
/etc/localtime timedatectl Festlegen des Datums, der Uhrzeit, und der Zeitzone
/etc/locale.{conf,gen} localectl Definiert die verwendete Locale des Systems
loginctl Verwaltung der Logins und deren Berechtigungen

Weitergehende Informationen zur Konfiguration enthält der Abschnitt zur Systemkonfiguration der Einsteigeranleitung.

systemctl

Die vier wichtigsten Parameter für systemctl sind start, stop, enable und disable.

  • systemctl
    • start servicename startet einen Service einmalig
    • stop servicename stoppt einen laufenden Service sauber
    • enable servicename aktiviert den Service für den automatischen Start
    • disable servicename deaktiviert den Autostart des Services

Die zusätzliche Option --now schließt bei einem Kommandos enable den start und bei disable den stop mit ein, d. h. nach einem enable wird der Service auch sofort gestartet bzw. nach einem disable sofort gestoppt sofern der enable bzw. disable erfolgreich war.

Über status kann man sich den Service-Status, sowie generelle Informationen über den betreffenden Service anzeigen lassen.

systemctl status sshd
● sshd.service - OpenSSH Daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: active (running) since Thu 2014-06-05 05:54:09 CEST; 2 days ago
 Main PID: 202 (sshd)
   CGroup: /system.slice/sshd.service
           └─202 /usr/bin/sshd -D

Hier wird am Beispiel des SSH-Services der aktuelle Status, sowie systembezogene Informationen angezeigt. Der Service wurde vor zwei Tagen geladen, dazu wurde die Service-Datei /usr/lib/systemd/system/sshd.service, und der Service ist momentan aktiv und funktioniert. Zudem wird er automatisch gestartet (enabled in der Zeile „Loaded“).

systemctl status sshd
● sshd.service - OpenSSH Daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: inactive (dead) since Sat 2014-06-07 21:47:14 CEST; 7min 14s ago
  Process: 202 ExecStart=/usr/bin/sshd -D (code=exited, status=0/SUCCESS)
 Main PID: 202 (code=exited, status=0/SUCCESS)

Hier wurde der SSH-Service vor knapp über 7 Minuten angehalten, ist aber nach wie vor für den automatischen Start vorgesehen.

systemctl status sshd
● sshd.service - OpenSSH Daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled)
   Active: inactive (dead)

Der Service ist gestoppt, und nicht für den automatischen Start vorgesehen.

Man kann sich zudem den Status von Mounts anzeigen lassen, indem man die entsprechende Bezeichnung oder Gerätedatei übergibt.

systemctl status /home
● home.mount - /home
   Loaded: loaded (/etc/fstab)
   Active: active (mounted) since Thu 2014-06-05 05:54:08 CEST; 2 days ago
    Where: /home
     What: /dev/sda3
     Docs: man:fstab(5)
           man:systemd-fstab-generator(8)

Hier wird angezeigt, dass /home über die fstab eingebunden wird, und vor zwei Tagen gemountet wurde.

systemctl status /dev/sda2
● dev-sda2.device - WDC_WD3200AAKS-75L9A0 swap
   Follow: unit currently follows state of sys-devices-pci0000:00-0000:00:1f.2-ata1-host0-target0:0:0-0:0:0:0-block-sda-sda2.device
   Loaded: loaded
   Active: active (plugged)
   Device: /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda2

Auf /dev/sda2 wird der Swap abgelegt, dieser wird von systemd verwaltet.

Systemverwaltung mit systemctl

Neben der Serviceverwaltung dient systemctl auch zur Systemverwaltung.

  • systemctl
    • halt hält das System an, ohne es auszuschalten
    • poweroff hält das System an, und schaltet es aus
    • reboot startet das System neu
    • hibernate versetzt das System in den Ruhezustand

Je nach Konfiguration können diese Befehle auch mit Useraccounts ausgeführt werden, und bedürfen keinen root-Rechten.

journalctl

Das Programm journalctl dient als Schnittstelle zu journald, systemds Logeintragsservice. Je nach Konfiguration kann das Journal nur im Arbeitsspeicher abgelegt werden, auf ein entferntes Gerät geschrieben werden, ganz regulär in Dateien gesichert werden, oder auch signiert, und so gegen Manipulation geschützt werden.

Durch die Eingabe von nur journalctl wird das aktuell angelegte System-Log angezeigt, anhand dessen Fehler analysiert werden können. Darüber hinaus bietet das Programm noch eine Vielzahl an weiteren Optionen

journalctl --list-boots
 […]
 -3 4f8ea7eaf576422abeabbcf6bd01a482 Thu 2014-05-19 08:54:18 CEST—Sat 2014-05-25 22:15:54 CEST
 -2 8b3e482a56c04128902b3bc627221865 Thu 2014-05-27 05:54:04 CEST—Sat 2014-06-01 20:55:12 CEST
 -1 a39ac4caa1a84de9be632afe48d79021 Thu 2014-06-02 07:31:14 CEST—Sat 2014-06-03 16:38:21 CEST
  0 42672184a2d7485ea7288c250f6d2dee Thu 2014-06-05 05:54:04 CEST—Sat 2014-06-07 21:50:26 CEST

Es wird eine Tabelle mit allen bisherigen Boots, sowie der Zeit, zu der das System heruntergefahren wurde ausgegeben. Damit diese Liste nicht unnötig lang wird, kann mittels -b ein Offset angegeben werden, zum Beispiel listet -b -5 die letzten fünf Boots auf, während -b 5 die ersten fünf Boots auflisten würde. Die Angabe vor dem Datum ist die Boot-ID, anhand derer alle Logeinträge des jeweiligen Zeitraums gefiltert werden können. Will man anhand des Beispiels alle Meldungen des Betriebszeitraums vom 27. Mai bis 01. Juni ansehen, geht dies wie folgt.

journalctl --boot 8b3e482a56c04128902b3bc627221865

Es werden dann alle diesen Zeitraum betreffenden Meldungen angezeigt. --boot kann in Kombination mit allen Funktionen von journalctl verwendet werden.

journalctl --boot a39ac4caa1a84de9be632afe48d79021 --unit ntpd --output json

Hiermit werden alle Logeinträge bezüglich des Services ntpd für den Beispielzeitraum vom 02. Juni bis zum 03. Juni als JSON formatiert ausgegeben. Mit der Kombination verschiedener Optionen kann man sich also seine „Wunschformatierung“ nach belieben selbst erstellen.

Siehe auch

Weblinks