Systemd hat mittlerweile andere Bootverwaltungsroutinen größtenteils abgelöst. Die Syntax ist im Vergleich zu den bereits bekannten Routinen etwas gewöhnungsbedürftig. Systemd ist jedoch schneller, da es weniger Skripte verwendet und Aufgaben parallel ausführt, allerdings auch umstritten. Die Konfiguration ist unter /etc/systemd zu finden.
Boot Prozess
Systemd’s hauptsächliche Aufgabe liegt darin, den Bootprozess zu verwalten und Informationen darüber zur Verfügung zu stellen. Um die Dauer des Bootprozesses anzeigen zu lassen:
1 |
systemd-analyze |
Um sich die Zeit, die jeder Prozess beim Bootvorgang benötigt hat, anzeigen zu lassen:
1 |
systemd-analyze blame |
Journal-Analyse
Zusätzlich ist Systemd verantwortlich für das System Event Log, ein Syslog Dameon wird nicht mehr benötigt. Um sich den Inhalt des Systemd Journals anzeigen zu lassen:
1 |
journalctl |
Prozessbezogene Ereignisse von crond anzeigen lassen:
1 |
journalctl /sbin/crond |
Anzeiger aller Meldungen seit dem letzten Reboot:
1 |
journalctl -b |
Anzeige aller Ereignisse von heute:
1 |
journalctl --since=today |
Anzeige aller Ereignisse mit der Priorität err (Fehler):
1 |
journalctl -p err |
Anzeige der lezten 10 Ereignisse (Echtzeitaktualisierung / equivalent zu tail -f /var/log/messages):
1 |
journalctl -f |
Kontrollgruppen
Systemd organisiert Aufgaben in Kontrollgruppen. Beispielsweise werden alle Prozesse, die vom Apache Webserver gestartet werden, in derselben Kontrollgruppe zusammen gefasst, CGI Skripte ebenso.
Um sich die Hierarchie der Kontrollgruppen anzeigen zu lassen:
1 |
systemd-cgls |
Listen basierte Anzeige der Kontrollgruppen, sortiert nach CPU, Speicher und Disk I/O:
1 |
systemd-cgtop |
Anzeiger aller einem Apache Webserver zugeordneten Prozesse:
1 |
systemctl kill httpsd |
Zuweisung eines Resourcenlimits von 500 CPUShares für einen Prozess:
1 |
systemctl set-property httpsd.service CPUShares=50 |
ACHTUNG!!! Die Änderung wird in die sogenannte „service unit“ Datei geschrieben. Um das zu verhindern und die Zuweisung nur für die aktuelle Laufzeit zu setzten, muss man die –runtime
Option setzen. Standardmäßig wird jedem Service 1024 CPUShares zugewiesen. Es gibt aber keinen Grund einem Service weniger oder gar mehr davon zuzuweisen.
Anzeige des akteullen Wertes der CPUShares für einen Service:
1 |
systemctl show -p CPUShares httpsd.service |
Service Management
Systemd ist u.a. zuständig für alle Aspekte des Service Managments. Das systemctl
Kommando ersetzt chkconfig
und das service
Kommando. Die alten Kommandos sind verlinkt auf die jeweiligen systemctl Aufrufe.
Aktivierung des NTP Service beim Bootvorgang:
1 |
systemctl enable ntpd |
ACHTUNG!!! Du solltest im obigen Beispiel ntpd.service angeben, aber per Default wird das .service Suffix hinzugefügt. Wenn du einen Pfad angibst, wird das .mount Suffix hinzugefügt.
NTP Serviceverwaltung (deaktivieren, starten, stoppen, neu starten, reload):
1 2 3 4 5 |
systemctl disable ntpd systemctl start ntpd systemctl stop ntpd systemctl restart ntpd systemctl reload ntpd |
Überprüfung der NTP Aktivierung beim Bootvorgang:
1 |
systemctl is-enabled ntpd |
Überprüfung von aktivem NTP Service:
1 |
systemctl is-active ntpd |
Anzeige des NTP Servicestatus:
1 |
systemctl status ntpd |
Systemctl Reload nach Änderungen:
1 |
systemctl daemon-reload |
Übersicht aller Units (Services, Mount Orte, Geräte):
1 |
systemctl |
Etwas übersichtlicher:
1 |
systemctl list-unit-files |
Servicefehlerliste für beim Boot gestartete Dienste:
1 |
systemctl --failed |
Anzeige von Prozessstatusinformationen:
1 |
systemctl status httpsd.service |
Target Files anstatt Runlevel
Systemd verwaltet ebefalls Runlevel mithilfe der sogenannten „target files“, anstatt der bisher bekannten Init Skripte.
Wechsel in den „single user mode“:
1 |
systemctl rescue |
Wechsel in den Runlevel 3 (Multi-user):
1 |
systemctl isolate runlevel3.target |
oder
1 |
systemctl isolate multi-user.target |
Wechsel in den grafischen Runlevel:
1 |
systemctl isolate graphical.target |
Setzen des default Runlevel auf den Nicht-grafischen Modus:
1 |
systemctl set-default multi-user.target |
oder umgekehrt:
1 |
systemctl set-default graphical.target |
Sich den aktuellen run level ausgeben zu lassen:
1 |
systemctl get-default |
System herunterfahren:
1 |
systemctl poweroff |
ACHTUNG!!! Man kann auch das gewohnte poweroff Kommando verwenden, es ist gelinkt zu dem equivalenten systemctl Kommando.
Server in verschiedene Suspendlevel versetzen (neustarten, pausieren, suspend) :
1 2 3 |
systemctl reboot systemctl suspend systemctl hibernate |
Sonstiges
Anzeige des Servernamens:
1 |
hostnamectl |
ACHTUNG!!! Es gibt drei verschiedene Arten von Hostnamen: static, transient und pretty.
Der Hostname vom Typ „static“ ist der traditionelle Hostname, welcher vom Benutzer ausgewählt werden kann, und wird in /etc/hostname gespeichert. Der Hostname des Types „transient“ wird dynamisch verwaltet vom Kernel. Dieser kann per DHCP oder mDNS zur Laufzeit geändert werden. Der dritte Hosttyp „pretty“ ist ein frei wählbarer UTF8 name zur Präsentation für den Benutzer.
Permanentes setzes des Hostnamens:
1 |
hostnamectl set-hostname rhel7 |
Um sich die aktuellen Einstellungen für „locale“, „virtual console keymap“ und X11 Keyboard Layout anzeigen zu lassen:
1 |
localectl |
Um de_DE.utf8 als Wert für „locale“ zu setzen:
1 |
localectl set-locale LANG=de_DE.utf8 |
Um de_DE.utf8 als Wert für „virtual console keymap“ zu setzen:
1 |
localectl set-keymap de_DE |
Um de_DE.utf8 als Wert für „X11“ zu setzen:
1 |
localectl set-x11-keymap de_DE |
Um sich das aktuelle Datum und die Zeit anzeigen zu lassen:
1 |
timedatect |
Um ein neues Datum zu setzen:
1 |
timedatectl set-time YYYY-MM-DD |
Um eine neue Zeit zu setzten:
1 |
timedatectl set-time HH:MM:SS |
Um eine Liste der Zeitzonen anzeigen zu lassen:
1 |
timedatectl list-timezones |
Um die Zeitzone auf Europe/Berlin
1 |
timedatectl set-timezone Europe/Berlin |
Um sich eine Liste der Benutzer ausgeben zu lassen:
1 |
loginctl list-users |
Um sich die Liste der aktuellen Benutzer Sessions ausgeben zu lassen:
1 |
loginctl list-sessions |
Um sich die Eigenschaften des Benutzers „user“ anzeigen zu lassen:
1 |
loginctl show-user user |
by Speefak