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

LU 09/2015: Paketverwaltung

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

Grammatikprüfung in LibreOffice nachrüsten
Grammatikprüfung in LibreOffice nachrüsten
Tim Schürmann, 24.04.2015 19:36, 2 Kommentare

LibreOffice kommt zwar mit einer deutschen Rechtschreibprüfung und einem guten Thesaurus, eine Grammatikprüfung fehlt jedoch. In ältere 32-Bit-Versionen ...

Aktuelle Fragen

Scanner EPSON Perfection V 300 photo und VueScan
Roland Welcker, 19.08.2015 09:04, 1 Antworten
Verehrte Linux-Freunde, ich habe VueScan in /usr/local/src/vuex_3295/VueScan installiert, dazu d...
Empfehlung gesucht Welche Dist als Wirt für VM ?
Roland Fischer, 31.07.2015 20:53, 2 Antworten
Wer kann mir Empfehlungen geben welche Distribution gut geeignet ist als Wirt für eine VM für Win...
Plugins bei OPERA - Linux Mint 17.1
Christoph-J. Walter, 23.07.2015 08:32, 3 Antworten
Beim Versuch Video-Sequenzen an zu schauen kommt die Meldung -Plug-ins und Shockwave abgestürzt-....
Wird Windows 10 update/upgrade mein Grub zerstören ?
daniel s, 22.07.2015 08:31, 7 Antworten
oder rührt Windows den Bootloader nicht an? das ist auch alles was Google mir nicht beantw...
Z FUER Y UND ANDERE EINGABEFEHLER AUF DER TASTATUR
heide marie voigt, 10.07.2015 13:53, 2 Antworten
BISHER konnte ich fehlerfrei schreiben ... nun ist einiges drucheinander geraten ... ich war bei...