systemd
systemd ist der Init-Prozess von Arch Linux. Es startet, überwacht, und beendet alle weiteren Services, ist für das mitloggen von Servicerückmeldungen und Benutzerinteraktionen zuständig. Zudem verwaltet systemd die Mounts, und beherrscht die Abhängigkeitsauflösung beim Starten von zusätzlichen Services.
Am schnellsten und einfachsten kann man systemd mit kcmshell5 kcm_systemd (für KDE) verwalten. Dies ist wesentlich einfacher als das unten dargestellte manuelle Getippe.
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 Mombination 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
- ArchLinux mit verschlüsseltem LVM und Systemd
- Einen eigenen systemd-Service erstellen
- Gängige/Wichtige Services
- systemd-networkd Netzwerkverbindungsverwaltung
- systemd-timesyncd für die Zeitsynchronisierung per NTP
- systemd-resolved für die Namensauflösung per DNS
- Wiki-Autoren: Bitte mit Artikeln zu wichtigen systemd-eigenen Services ergänzen.