Systemd-Dienstdatei

Systemd Dienstdatei



Unter Linux zeigt die systemctl-Statusausgabe, dass der Dienst über eine Datei geladen wird, die als Dienstdatei bezeichnet wird. Auf diese Dateien kann im zugegriffen werden /lib/systemd/system oder /etc/systemd/system Verzeichnisse.

Die Servicedateien haben .Service Erweiterungen und enthalten die Anweisungen, die erforderlich sind systemd einen Dienst verwalten.







Der systemd init system verwaltet die Systeminitialisierung mithilfe von Einheit . Eine Einheit ist ein Objekt, das eine Aufgabe oder Aktion ausführt, beispielsweise die Verwaltung eines Dienstes, wozu auch die Steuerung und Überwachung des Dienstes gehört. Bei diesen Einheiten handelt es sich im Wesentlichen um Dateien, sogenannte Servicedateien, die Einheitenabhängigkeiten und Befehle enthalten. Diese Dateien sind für die effiziente Steuerung der Hintergrundprozesse und die Ressourcenverwaltung von entscheidender Bedeutung.



In der Anleitung werde ich die Systemd-Dienstdatei, ihre Struktur und die wichtigsten Anweisungen, die den Dienst steuern, untersuchen.



Bei der Arbeit mit systemd gelten die Bedingungen systemd-Dienstdatei Und systemd-Unit-Datei werden oft synonym verwendet, da sie sich technisch gesehen auf dasselbe beziehen.





Was ist eine Systemd-Dienstdatei?

Unter Linux verwaltet der Systemd die Dienste mithilfe der Dienstdateien, die die Konfigurationsanweisungen enthalten, damit der Systemd sie verstehen und ausführen kann.

Um die Einheiten aufzulisten, verwenden Sie systemctl mit dem –Listeneinheiten Befehl.



systemctl --list-units

Um die Dienstdatei eines beliebigen Dienstes zu lesen, verwenden Sie die Katze Befehl mit dem Dateipfad.

Katze [ / Dienstdateipfad ]

Zum Beispiel, um die Servicedatei von anzuzeigen ssh.service Verwenden Sie den angegebenen Befehl.

Katze / lib / systemd / System / ssh.service

Anatomie der Systemd-Dienstdatei

Im Allgemeinen enthalten Systemd-Service-Unit-Dateien drei Abschnitte.

  • Einheit
  • Service
  • Installieren

Eine dienstspezifische Unit-Datei verfügt über einen bestimmten Abschnitt namens Service Abschnitt.

Beachten Sie, dass der Dienst nur eine Art Einheit ist. Eine Einheit kann verschiedene Typen haben, z. B. Socket, Gerät, Mount, Automount, Swap, Target, Timer, Slice und Scope. Diese Abschnitte werden zwischen den Abschnitten „Unit“ und „Install“ platziert. Auch die Dateierweiterung wird durch den jeweiligen Unit-Typ ersetzt, z. B. hat ein Socket-Unit-Typ ein .Steckdose Dateierweiterung.

Notiz: In diesem Leitfaden werde ich mich auf den Service-Unit-Typ konzentrieren, da er von Administratoren und Entwicklern häufig verwendet wird.

Diese Abschnitte sind in eckige Klammern ([]) eingeschlossen. Jeder Abschnitt enthält einen relevanten Befehlssatz. Eine allgemeine Struktur einer Servicedatei ist unten angegeben.

[ Einheit ]

Richtlinie1 =Anleitung 1

Richtlinie2 =Anleitung 2

[ Service ]

Richtlinie1 =Anleitung 1

Richtlinie2 =Anleitung 2

[ Installieren ]

Richtlinie1 =Anleitung 1

Richtlinie2 =Anleitung 2

Die Reihenfolge der Abschnitte kann geändert werden; Im Allgemeinen wird jedoch die oben genannte Reihenfolge eingehalten.

Abschnitt [Einheit].

Der Abschnitt „Einheit“ enthält die Beschreibung der Einheit und der Einheitenabhängigkeiten. Dieser Abschnitt wird vereinbarungsgemäß oben in der Servicedatei platziert. Häufig verwendete Anweisungen sind unten aufgeführt:

Richtlinie Beschreibung
Beschreibung Diese Anweisung wird verwendet, um den Namen des Dienstes anzugeben. Die Länge der Beschreibung darf 80 Zeichen nicht überschreiten.
Dokumentation Diese Anweisung enthält die Manpage oder URL des Dienstes.
Erfordert Mit dieser Direktive wird die Abhängigkeit vom aktuellen Dienst erwähnt. Wenn die Aktivierung dieses Abhängigkeitsdienstes nicht durchgeführt wird, wird der aktuelle Dienst nicht initiiert.
Will Mit dieser Direktive wird die Abhängigkeit vom aktuellen Dienst erwähnt. Dieser Abhängigkeitsdienst muss jedoch nicht aktiviert werden, um den aktuellen Dienst auszuführen.
Vor Nachdem die aktuelle Einheit aktiviert wurde, wird der in dieser Anweisung erwähnte Dienst gestartet.
Nach Bevor die aktuelle Einheit aktiviert wurde, wird der in dieser Anweisung erwähnte Dienst gestartet.
Bindet an Diese Anweisung verknüpft den aktuellen Dienst mit dem genannten Dienst. Wenn der verknüpfte Dienst neu gestartet wird, werden auch die aktuellen Dienste neu gestartet.

Neben diesen Richtlinien gibt es noch zwei weitere Richtlinien; Zustand Und Behaupten. Viele Dienste erfordern bestimmte Systembedingungen, um erfolgreich ausgeführt zu werden, und diese Anweisungen werden verwendet, um die Bedingungen zu erwähnen.

Abschnitt [Installieren].

Dieser Abschnitt ist nicht obligatorisch und nur erforderlich, wenn ein Dienst beim Booten aktiviert oder deaktiviert werden muss. Darüber hinaus ist auch der Alias-Dienst zu erwähnen. Häufig verwendete Anweisungen für den Abschnitt „Installieren“ sind unten aufgeführt:

Richtlinie Beschreibung
Gesucht von Diese Direktive legt den Runlevel fest * Ziel des Dienstes. Wenn ein Ziel festgelegt ist Mehrbenutzerziel dann wird der Dienst auf diesem Runlevel aktiviert.
Benötigt von Diese Anweisung ähnelt WantedBy, allerdings wird der Dienst auch ohne die in der Anweisung erwähnte Abhängigkeit aktiviert.
Alias Diese Anweisung wird verwendet, um den Dienst mit einem anderen Namen zu aktivieren. Bei der Aktivierung des Dienstes wird ein Symlink mit diesem Namen erstellt.

Meistens die Mehrbenutzerziel wird benutzt als Gesucht von Parameter. Aber was ist multi-user.target?

Das multi-user.target stellt den Systemstatus dar, der bereit ist, nicht-grafische Mehrbenutzersitzungen zu akzeptieren. Dies ist der Zustand vor dem Start der GUI.

Es gibt verschiedene Ausführungsebenen des Systems. Lassen Sie uns mehr über die Funktion dieser Ausführungsebenen erfahren.

In systemd werden die Dienste nach aufgerufenen Runleveln gruppiert Ziele . Jeder Runlevel hat eine Datei mit .Ziel Erweiterung in der /etc/systemd/system Verzeichnis. Ein Dienst wird basierend auf dem Status des Runlevels ausgeführt.

Run-Level Ziele Zustand Dateien
0 ausschalten Herunterfahren und ausschalten poweroff.target
1 Rettung Startet die Rettungsshell Rettungsziel
2,3,4 Mehrbenutzer Startet die Nicht-GUI-Shell für mehrere Benutzer Mehrbenutzerziel
5 grafisch Richtet eine Mehrbenutzer-GUI-Shell ein grafisches.Ziel
6 neu starten Herunterfahren und neu starten reboot.target

Abschnitt [Service].

Dieser Abschnitt enthält die Konfigurationseinstellungen für den Dienst. Die primäre Konfiguration dieses Abschnitts besteht darin, den Typ und die Befehle zu definieren, die beim Start des Dienstes ausgeführt werden sollen. Typ Und ExecStart sind die wichtigsten Anweisungen zum Einrichten eines Dienstes.

In der folgenden Tabelle sind verschiedene Arten des Dienstes aufgeführt.

Servicetyp Beschreibung
einfach Dies ist der Standardtyp, wenn der Typ oder Busname nicht erwähnt wird und nur ExecStart erwähnt wird. Der Systemd führt zuerst den Hauptprozess und dann Folgeeinheiten aus.
Gabelung Dieser Typ wird verwendet, um den Dienst auch dann weiterlaufen zu lassen, wenn der übergeordnete Dienst geschlossen ist. Es verzweigt einen untergeordneten Prozess nach dem Schließen des übergeordneten Prozesses.
Oneshot Der Systemd führt zuerst den Hauptprozess aus und wenn der Hauptprozess beendet wird, werden die Folgeeinheiten gestartet.
dbus Der Dienst mit dbus wird verwendet, um mit einem anderen Prozess auf dem Bus zu kommunizieren. Wenn der Busname erwähnt wird, wird der Prozess aktiviert, nachdem der Busname erfasst wurde.
benachrichtigen Der Dienst benachrichtigt Sie, wenn der Vorgang gestartet wird. Das System geht nach der Benachrichtigung zu den Folgeeinheiten über.
Leerlauf Der Dienst bleibt bestehen, bis alle aktiven Jobs versandt sind. In erster Linie nützlich, um die Konsolenausgabe zu verbessern.

Die häufig verwendeten Anweisungen im Abschnitt „Service“ sind unten aufgeführt:

Richtlinie Beschreibung
ExecStart Es behält den vollständigen Pfad des Befehls bei, der ausgeführt werden soll, um den Prozess zu starten.
ExecStartPre Es behält die Befehle bei, die ausgeführt werden sollten, bevor der Hauptprozess beginnt.
ExecStartPost Es behält die Befehle bei, die nach Beginn des Hauptprozesses ausgeführt werden sollen.
ExecReload Der Befehl zum Neuladen der Dienstkonfiguration wird beibehalten.
Neu starten Zum automatischen Neustart des Dienstes unter Umständen wie „Fehler“, „Erfolg“, „Anormal“, „Abbruch“ und „Watchdog“.
RestartSec Um die Anzahl der Sekunden beizubehalten, nach denen der Dienst automatisch neu gestartet wird.

Der ExecStart ist eine der entscheidenden Anweisungen, die im Abschnitt „Service“ verwendet werden. Es enthält die Vollständiger Pfad der ausführbaren Datei dass der Dienst beim Aufruf ausgeführt wird.

Abschluss

Eine Systemd-Dienstdatei ist eine Konfigurationsdatei, die mit Anweisungen und Befehlen strukturiert ist, sodass sie von Systemd verwaltet werden können. Diese Dateien enthalten Anweisungen, die angeben, wie ein Dienst von systemd verwaltet wird. In diesem Handbuch habe ich beschrieben, wie man auf eine systemd-Dienstdatei, ihre Abschnitte und Anweisungen zur Verwaltung der Dienste zugreift. Um mehr über die Anweisungen für Servicedateien zu erfahren, lesen Sie bitte die offizielle Dokumentation Hier .