So schreiben Sie einen einfachen systemd-Dienst
Objektiv
Schreiben Sie einen grundlegenden systemd-Dienst.
Ausschüttungen
Dies funktioniert auf jeder Distribution, auf der systemd läuft.
Anforderungen
Eine funktionierende Linux-Installation mit systemd- und root-Rechten.
Konventionen
- # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder mit dem Befehl
sudo - $ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden
Einleitung
Systemd ist nahezu unvermeidlich. Es hat so viele Aspekte des Linux-Ökosystems durchdrungen, dass es für jeden Linux-Administrator notwendig ist, zumindest die Grundlagen seiner Funktionsweise zu kennen.
Eines der Hauptverkaufsargumente von systemd ist die Leichtigkeit, mit der Servicedateien geschrieben werden können. Es sind keine Drehbücher. Stattdessen handelt es sich um grundlegende Konfigurationsdateien. Obwohl sie komplex werden können, sind sie in der Regel sehr einfach.
Erstellen Sie die Datei
Systemd-Dienste existieren unter /etc/systemd/system. Wenn Sie sich Ihr System ansehen, sind sie alle da. Öffnen Sie tatsächlich sshd.service. Scannen Sie es und sehen Sie, was da ist. Sie werden wahrscheinlich nicht alles wissen, aber Sie können sicherlich einiges davon verstehen und erkennen, wie einfach es ist.
Jede .service-Datei, die Sie in diesem Verzeichnis erstellen, kann als Dienst ausgeführt werden, wenn Sie sie ordnungsgemäß erstellen.
Erstellen Sie eine Datei mit der Erweiterung .service, die Sie möchten.
Einheit
Der erste Abschnitt, den Sie schreiben müssen, ist die [Einheit]. Für einen Basisdienst benötigen Sie lediglich eine grundlegende Beschreibung Ihres Dienstes. Fangen Sie so an.
[Unit]
Description=A bit about your serviceDienst
Der [Service]-Block ist der Großteil des Inhalts der Konfiguration. Dies ist der Block, der die Direktiven enthält, die dem Dienst mitteilen, wie und wo er ausgeführt werden soll.
Erstellen Sie den Block. Das erste, was Sie darlegen müssen, ist die Art der Dienstleistung, um die es sich handelt. Dies ist nur ein einfacher Service, also teilen Sie systemd das mit.
Type=simpleDieser nächste Teil ist wahrscheinlich der wichtigste. Sie müssen systemd mitteilen, was ausgeführt werden soll. Dabei handelt es sich eigentlich um einen regulären Befehl oder einen Aufruf eines Skripts. Schauen Sie sich das Beispiel an.
ExecStart=/opt/scripts/run-backup.sh --full --to-externalOffensichtlich haben Sie dieses Skript nicht, aber Sie können sehen, wie Sie einfach die gleiche Art von Befehl verwenden, den Sie normalerweise ausführen würden.
Systemd ist auch sehr gut in der Lage, fehlgeschlagene Dienste neu zu starten. Dies ist ein weiterer Parameter, den Sie innerhalb dieser Konfiguration festlegen können. Wenn Sie möchten, dass es neu gestartet wird, wenn es fehlschlägt, versuchen Sie Folgendes.
Restart=on-failureEs kann auch nützlich sein, eine PID-Datei für Ihren Dienst anzugeben, falls eine solche erforderlich ist.
PIDFile=/tmp/yourservice.pid
Wenn Sie einen bestimmten Benutzer oder ein bestimmtes Verzeichnis verwenden möchten oder benötigen, können Sie dies ebenfalls tun.
User=srvuser
WorkingDirectory=/var/yourserviceSie können auch ein Laufzeitverzeichnis und die Dateiberechtigungen dieses Verzeichnisses festlegen, während es verwendet wird.
RuntimeDirectory=yourservice
RuntimeDirectoryMode=0755Es gibt noch viel mehr, was Sie tun können, aber mit diesen Grundlagen sollten Sie in der Lage sein, Ihre eigenen einfachen Dienste zusammenzustellen und mit bestehenden zu arbeiten.
Installieren
Schließlich gibt es noch den [Install]-Block. Alles, was Sie hier tun müssen, ist anzugeben, wie Ihr Dienst aktiviert werden soll. Der gebräuchlichste Weg, dies zu tun, ist mit multi-user.target.
[Install]
WantedBy=multi-user.targetAbschließende Gedanken
Das war's auch schon mit den Grundlagen. Sie können sicherlich grundlegende und sogar etwas fortgeschrittenere Dienste erstellen und ändern. Hoffentlich gewinnen Sie mehr Vertrauen in die Arbeit mit systemd und fühlen sich beim Erstellen Ihrer eigenen Dienstdateien mit mehr Erfahrung wohler.