Einheitsbrei

Systemd bezeichnet alle von ihm zu verwaltenden Aufgaben als "Units" (Einheiten). Eine Unit umfasst beispielsweise den Druckdienst Cups, eine andere das Einhängen des Heimatverzeichnisses. Beide Units erfordern offensichtlich unterschiedliche Aktionen. Daher besitzt jede Unit einen ganz bestimmten Typ.

Bei Cups handelt es sich um einen Dienst und somit um den Typ service, das Einhängen wäre hingegen vom Typ mount. Damit Systemd überhaupt von der Unit erfährt, braucht es eine passende Konfigurationsdatei. Sie trägt den gleichen Namen wie die Unit, der sich wiederum aus einem frei wählbaren Namen und dem Typ zusammensetzt.

So bietet es sich zum Beispiel an, die Konfigurationsdatei für den Druckdienst cups.service zu nennen. Neben service und mount kennt Systemd noch weitere Kategorien, die Sie in der Tabelle "Unit-Typen" finden.

Unit-Typen

service Dienst (in der Regel in der Form von Daemons)
socket Kapselt einen Socket. Jeder Socket hat eine passende service-Unit, die automatisch startet, sobald sich ein Programm mit dem Socket verbindet.
device Gerät
mount Einhängepunkt
automount Automount-Point im Dateisystem. Jede automount-Unit hat eine zugehörige mount-Unit, die Systemd einhängt, wenn ein Programm auf das Verzeichnis zugreift.
target Gruppiert andere Units, die dann zusammen wie eine einzige Unit auftreten.
snapshot Funktioniert ähnlich wie target und speichert den Zustand der Dienste. Damit haben beispielsweise die Möglichkeit, das System vorübergehend in den Zustand Notfall zu versetzen und anschließend wieder zur normalen Arbeitsumgebung zurück zu kehren.
swap Kontrolle von Swap-Dateien und -Partitionen
timer Aktiviert Dienste zu bestimmten Zeiten oder Zeitpunkten, die Angaben erfolgen im Cron-Stil
path Aktiviert Units abhängig davon, ob bestimmte Dateien existieren oder ein Spool-Verzeichnis einen bestimmten Füllstand erreicht hat.

Heimwerker

Um einen eigenen Dienst beim Start zu aktivieren, gilt es eine passende Konfigurationsdatei zu erstellen. Listing 1 zeigt die Datei laermmessung.service als kleines Beispiel für die Software einer Lärmmessstation.

Listing 1

[Unit]
Description=Dieser Dienst zeichnet den Fluglärm auf.
After=syslog.target
[Service]
ExecStart=/usr/bin/laermmessung
Restart=on-abort
[Install]
WantedBy=multi-user.target

Die Konfigurationsdateien benutzen einen ähnlichen Aufbau wie die weit verbreiteten .desktop-Dateien. Der Abschnitt [Unit] enthält ein paar allgemeine Informationen über den Dienst. Dazu zählt eine kurze, für Menschen gedachte Beschreibung (Description) des Dienstes.

Die Software meldet Probleme über den Dienst syslog und schreibt die aufgezeichneten Daten in Dateien auf die Festplatte. Unter Systemd dürfen alle Dienste mit einem vorhandenen Dateisystem rechnen; folglich brauchen Sie dies nicht extra sicherstellen. Bleibt die Abhängigkeit zum Dienst syslog. Darum kümmert sich in Zeile 3 der Parameter After=. Hier tragen Sie einfach die Unit ein, von der das Programm abhängt.

Bei mehreren Abhängigkeiten listen Sie die Unit-Namen einfach durch Leerzeichen voneinander getrennt auf. Unter Umständen fällt diese Liste jedoch recht lang aus. Damit Sie sich nicht die Finger wund tippen, gibt es die Target-Units. Damit gruppieren Sie mehrere Units unter einem einheitlichen Namen.

Systemd bringt bereits ein paar spezielle Target-Units von Haus aus mit [5]. Dazu gehört unter anderem auch syslog.target, das Listing 1 verwendet. Diese Unit sorgt schlichtweg für den Start einer Syslog-Implementation.

Da Systemd möglichst viele Dienste parallel aktiviert, dient die Angabe hier nur dazu, eine (Start-)Reihenfolge vorzuschlagen und nicht zu erzwingen. Ergänzend zu After kennt Systemd noch die Anweisungen aus Tabelle "Bedingungen für einen Dienst".

Bedingungen für einen Dienst

Anweisung Bedeutung
After Der Dienst möchte nach der angegebenen Unit starten.
Require Der Dienst benötigt die angegebene Unit zwingend.
Wants Der Dienst möchte die Unit gerne laufen sehen.
Conflicts Der Dienst arbeitet nicht mit dieser Unit zusammen.

Der nächste Abschnitt [Service] gibt ein paar Informationen über den Dienst selbst preis. Er existiert folglich nur in Konfigurationsdateien vom Typ .service. Mit ExecStart= geben Sie den Namen der Programmdatei an, im Beispiel /usr/bin/laermmessung. Systemd ruft sie auf, wenn er den Dienst startet.

Wie von Systemd generell gefordert, läuft die Software im Vordergrund. Will der Dienst-Daemon dennoch unbedingt im Hintergrund laufen, beziehungsweise einen Fork erstellen, teilen Sie dies Systemd über den Parameter Type=forking mit (Listing 2). Und auch für den Fall, dass der Dienst den D-Bus nutzt, gibt es eine entsprechende Variante (Listing 3).

Listing 2

[Service]
ExecStart=/usr/bin/laermmessung -d
Type=forking
Restart=on-abort

Listing 3

[Service]
Type=dbus
BusName=de.dfld.laermmessung
ExecStart=/usr/bin/laermmessung

Der Parameter BusName= nennt den D-Bus-Namen der Software. Über Restart=on-abort sorgen Sie dafür, dass Systemd den Dienst neu startet, sobald sich dieser aus irgendeinem Grund beendet.

Der letzte Abschnitt [Install] aus Listing 1 teilt dem Systemd mit, wann und unter welchen Bedingungen Sie den Dienst starten wollen. Im Beispiel beginnt die Software mit der Arbeit (WantedBy), wenn Systemd die Unit multi-user.target aktiviert. Sie kapselt alle Dienste, die für den Betrieb eines Mehrbenutzersystems notwendig sind.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • 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.
  • Systemd als Schaltzentrale für das Linux-System
    Systemd polarisiert die Community – und hat zugleich das Zeug dazu, alte Gräben zu schließen und eine einheitliche Basis für Linux zu bilden.
  • Systemd 209 freigegeben
    Die neue Version des Init-Systems bringt viele kleine Änderungen mit. So ist Systemd jetzt auf KDbus vorbereitet und übernimmt die Konfiguration von Netzwerkschnittstellen mit dem neuen Dienst Networkd.
Kommentare

Infos zur Publikation

title_2014_10

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

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

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...