Feuer frei

Die fertige Konfigurationsdatei wandert nun unter dem Namen laermmessung.service in das Verzeichnis /etc/systemd/system/. Dort hinein gehören alle eigenen Konfigurationsdateien, die vom System mitgebrachte lagern hingegen unter /lib/systemd/system/. Mit dem Befehl

$ sudo systemctl daemon-reload

liest Systemd die geänderte Konfiguration. Den neuen Dienst startet schließlich der Aufruf

$ sudo systemctl start laermmessung.service

Dass der Dienst läuft, verrät ebenfalls das Kommando systemctl, diesmal allerdings mit dem Befehl status statt start (Abbildung 1). Eine Übersicht über die Befehle für die Software liefert die Tabelle "Systemctl-Kommandos".

Abbildung 1: Mit dem Kommando systemctl status cups.service erfahren Sie alle Einzelheiten über den Druckdienst.

Systemctl-Kommandos

Befehl Bedeutung
daemon-reload Konfiguration neu einlesen
start Unit Unit starten
stop Unit Unit kontrolliert stoppen
kill Unit Unit sofort beenden (Datenverlust möglich)
status Unit Status von Unit abfragen
diable Unit Unit deaktivieren und damit weder beim Systemstart noch auf Anfrage hochfahren

Wer hat's gesehen?

Das Werkzeug Systemctl hilft als kleiner Tausendsassa in vielen weiteren Lebenslagen. Ein einfaches systemctl liefert zunächst eine Liste aller laufenden Dienste (Abbildung 2). Ein besonderes Augenmerk verdient die Spalte active: Sie zeigt an, ob ein Dienst derzeit läuft (active), nicht arbeitet (inactive) oder ob bei seiner Inbetriebnahme ein Problem auftrat (maintenance). Über systemctl status Unit erfahren Sie weitere Informationen zum Zustand.

Abbildung 2: Systemctl zeigt eine Liste mit allen vorhandenen Diensten, ihrem Status und der Beschreibung an.

Per isolate weisen Sie Systemd an, die Units eines ganz bestimmten Targets herzustellen:

$ sudo systemctl isolate multi-user.target

Dieses Beispiel aktiviert alle Units, die für einen Mehrbenutzermodus ohne grafische Oberfläche notwendig sind. Für alle, die noch in Runleveln aus SysV-Init-Zeiten denken, liefert Systemd passende Targets mit, die das alte Verhalten simulieren. Beispielsweise wechselt:

$ sudo systemctl isolate runlevel5.target

in einen Systemzustand mit grafischer Benutzeroberfläche. Beim Booten aktiviert Systemd übrigens standardmäßig das Target default.target. Dahinter verbirgt sich ein symbolischer Link, der auf eine andere Konfigurationsdatei zeigt. Unter Fedora 15 ist dies noch das runlevel5.target, zukünftig schwenken die Entwickler wohl auf das Systemd-Pendant graphical.target um.

Mit Systemd hält auch ein neuer Befehl Einzug, um das komplette System kontrolliert herunterzufahren und auszuschalten:

$ sudo systemctl --force poweroff

Die alten Befehle wie shutdown und reboot funktionieren allerdings weiterhin, Systemd übersetzt sie passend. Wer anstelle von Systemctl eine grafische Oberfläche bevorzugt, greift zu Systemadm aus dem Paket systemd-gtk (Abbildung 3).

Abbildung 3: Mit Systemadm aktivieren und deaktivieren Sie alle vorhandenen Units bequem per Mausklick.

Systemd protokolliert penibel seinen Systemstart. Per systemd-analyze blame erfahren Sie, wie lang welcher Dienst für den Start benötigt hat (Abbildung 4), einen passenden netten Graphen erzeugt:

$ sudo systemd-analyze plot > ergebnis.svg
Abbildung 4: Systemd merkt sich, welche Dienste wie lange beim Start getrödelt haben.

Als Ergebnis erhalten Sie dann ein SVG-Bild in der Datei ergebnis.svg, das Sie beispielsweise in Inkscape oder einem geeigneten Browser begutachten (Abbildung 5).

Abbildung 5: Bei Bedarf erzeugen Sie ein Diagramm, das den Systemstart und die dabei benötigten Zeiten zeigt.

Altlasten

Um mit dem älteren SysV-Init-System kompatibel zu bleiben, wertet Systemd die klassischen Init-Skripte aus. Diese fasst es einfach als eine weitere Quelle für Konfigurationsdateien auf und verwandelt die eingelesenen Skripte intern in passende Units. Analog liest und interpretiert Systemd weitere bekannte Konfigurationsdateien ein. Dazu gehört beispielsweise /etc/fstab, dessen Einträgen das Programm als Mount- beziehungsweise Automount-Units auffasst.

Wer schon ein Startskript für das alte SysV-Init verfasst hat und dieses in eine Service-Datei umwandeln möchte, sucht vermutlich nach einer Möglichkeit, vor dem eigentlichen Programmstart noch Skripte zum Vorbereiten auszuführen. Davon gilt es sich in Systemd jedoch gedanklich zu verabschieden – zumindest fast: Mit der Variable ExecStartPre= im Abschnitt [Service] gelingt das immer noch:

ExecStartPre=/bin/rm -f /var/log/messungen

Den hinter dem Gleichheitszeichen angegebenen Befehl, der ein Shell-Skript sein darf, führt Systemd aus, bevor es den hinter ExecStart= genannten Dienst aktiviert. Analog gibt es noch ein ExecStartPost=, bei dem Systemd den angegebenen Befehl nach dem Start des Dienstes absetzt. Abschließend existiert noch ein ExecStop=.

Diesen Befehl ruft Systemd auf, um den Dienst stoppen. Nach den Vorstellungen der Systemd-Entwickler sollen die Funktionen dieser Hilfsprogramme jedoch möglichst in den Daemon selbst wandern. Deren Programmierer sind zudem angehalten:

  • möglichst keine Prozesse zu forken und nicht setsid() aufzurufen,
  • keine Benutzerrechte mit dem Daemon zu ändern (das übernimmt Systemd),
  • keine PID-Dateien zu erstellen,
  • einen Namen über den D-Bus zu beziehen, sofern der Daemon den D-Bus verwendet,
  • Systemd zum Logging zu benutzen,
  • über Systemd die Sockets zu erstellen und zu beobachten, und
  • SIGTERM für Anfragen zum Shutdown zu benutzen.

Mehr zur Interaktion mit Systemd zeigt Lennart Poettering in einem Blog-Beitrag [8].

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Systemstart
    Auf fast allen modernen Linux-Distributionen kümmert sich inzwischen Systemd um den Systemstart – und mehr. Wir erklären, wie die neue Schaltzentrale funktioniert.
  • Durchstarten
    Beim Wettstreit zwischen dem klassischen Init und dem recht jungen Systemd trifft jahrzehntelang gewachsene Technik auf neue Konzepte.
  • Die Neuerungen der Version 198

    Die frisch veröffentlichte Version bietet neben neuen Werkzeugen unter anderem auch die Möglichkeit, die Unit-Definitionen mit zusätzlichen Konfigurationsdateien zu überschreiben.
  • Upstart und Systemd im Vergleich
    Upstart und Systemd – gleich zwei neue Ansätze konkurrieren um die Pole-Position beim Linux-Start. Wir unterziehen die Kandidaten einem konzeptionellen Vergleich.
  • Neuerungen in Systemd

    Auf der Mailingliste hat Systemd-Entwickler Lennart Poettering Version 202 der Software angekündigt.
Kommentare

Infos zur Publikation

LU 12/2016: Neue Desktops

Digitale Ausgabe: Preis € 5,99
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Aktuelle Fragen

Brother Drucker DCP-J4120
Achim Zerrer, 09.12.2016 18:08, 0 Antworten
Hallo, ich wollte unter Leap 42.1 den Brother Drucker installieren und dazu das PPD- Datei vom do...
Drucker Epson XP-332 unter ubuntu 14.04 einrichten
Andrea Wagenblast, 30.11.2016 22:07, 2 Antworten
Hallo, habe vergeblich versucht mein Multifunktionsgerät Epson XP-332 als neuen Drucker unter...
Apricity Gnome unter Win 10 via VirtualBox
André Driesel, 30.11.2016 06:28, 2 Antworten
Halo Leute, ich versuche hier schon seit mehreren Tagen Apricity OS Gnome via VirtualBox zum l...
EYE of Gnome
FRank Schubert, 15.11.2016 20:06, 2 Antworten
Hallo, EOG öffnet Fotos nur in der Größenordnung 4000 × 3000 Pixel. Größere Fotos werden nic...
Kamera mit Notebook koppeln
Karl Spiegel, 12.11.2016 15:02, 2 Antworten
Hi, Fotografen ich werde eine SONY alpha 77ii bekommen, und möchte die LifeView-Möglichkeit nu...