So erstellen Sie eine Servicedatei unter Linux

So Erstellen Sie Eine Servicedatei Unter Linux



Das Init-System systemd ist mittlerweile Bestandteil fast aller Linux-Distributionen. Als Administrator oder Entwickler erstellen Sie Dienste, die systemd verwalten kann. Wenn Sie beispielsweise Dienste beim Booten starten oder manuell steuern möchten, kann dies über eine benutzerdefinierte Dienstdatei erfolgen.

In diesem Tutorial werde ich erläutern, wie man eine systemd-Dienstdatei unter Linux erstellt.







Was ist eine Servicedatei?

Bevor wir fortfahren, wollen wir verstehen, was eine systemd-Dienstdatei ist und wie sie unter Linux erstellt wird.



Eine Systemd-Dienstdatei enthält Anweisungen für Systemd zur Verwaltung des Dienstes. Es enthält normalerweise drei Abschnitte:



  • Einheit
  • Service
  • Installieren

Der Einheit Der Abschnitt enthält grundlegende Informationen zum Dienst, z. B. eine kurze Beschreibung, Dokumentationsseiten und einen Pfad zu Abhängigkeiten. Der Installieren Der Abschnitt ist optional, aber normalerweise verwaltet er, bei welchem ​​Systemstatus der Dienst aktiviert werden soll.





Der Service Der Abschnitt liegt normalerweise zwischen den Abschnitten Unit und Install. Es enthält hauptsächlich den Typ des Dienstes und den Pfad der ausführbaren Dateien, bei denen es sich im Wesentlichen um Befehle handelt, die beim Aufruf des Dienstes durch systemd ausgeführt werden sollen.

So sieht eine typische Servicedateistruktur aus.



[ Einheit ]

Richtlinie1 =Anweisung

Richtlinie2 =Anweisung



[ Service ]

Richtlinie1 =Anweisung

Richtlinie2 =Anweisung



[ Installieren ]

Richtlinie1 =Anweisung

Richtlinie2 =Anweisung

Hier sind Anweisungen Parameter, die ihre jeweilige Eingabe entgegennehmen. Zum Beispiel die Beschreibung Die Direktive benötigt eine Zeichenfolge mit dem Namen des Dienstes. Auf ähnliche Art und Weise, ExecStart berücksichtigt den vollständigen Pfad der ausführbaren Datei.

Eine typische Servicedatei von ssh.service ist unten angegeben.

So erstellen Sie eine Servicedatei

Um einen systemd-Dienst zu erstellen, ist es notwendig, die wichtigsten Anweisungen zu verstehen. In diesem Leitfaden werde ich die wesentlichen Anweisungen behandeln, die Ihnen beim Erstellen einer voll funktionsfähigen Servicedatei helfen können.

Das Erstellen einer Servicedatei umfasst mehrere Schritte. Beginnen wir mit der Erstellung der Skriptdatei.

Notiz: Um mit der unten genannten Methode fortzufahren, müssen Sie über Root-Rechte verfügen.

1. Erstellen eines Skripts

Der erste Schritt umfasst die Erstellung des Codes, der ausgeführt wird, wenn der Dienst seinen Betrieb aufnimmt. Für dieses Tutorial erstelle ich ein Bash-Skript, das die Betriebszeit des Linux-Systems und die Speichernutzung speichert.

Erstellen wir im aktuellen Verzeichnis ein Skript mit dem Namen myscript.sh mit dem Nano-Editor.

Sudo Nano myscript.sh

Fügen Sie nun das unten angegebene Skript in die Datei ein und speichern Sie es durch Drücken von Strg+x und dann Und .

#!/bin/bash

Echo „>>Hier ist die Betriebszeit Ihres Systems<<“ > heim / sich selbst / meinedatei.txt

Betriebszeit >> heim / sich selbst / meinedatei.txt

Echo „>>Hier ist die Speichernutzung Ihres Systems<<“ >> / heim / sich selbst / meinedatei.txt

frei -M >> heim / sich selbst / meinedatei.txt

schlafen 60

Das Skript enthält ein paar Echo-Strings und Betriebszeit Und frei Befehle.

Der Betriebszeit Der Befehl unter Linux wird verwendet, um auszudrucken, wie lange ein System bereits läuft und wie viele Benutzer bei einer durchschnittlichen Systemauslastung der letzten 1, 5 und 15 Minuten verbunden sind.

Der frei Der Befehl wird verwendet, um die Speichernutzung des Systems zu drucken, während der -M Flag wird zum Drucken der Ausgabe verwendet MB .

Um Informationen in einer Textdatei zu speichern, verwenden wir spezielle Operatoren, sogenannte Umleitungsoperatoren. Der > Der Operator wird verwendet, um Text in die genannte Textdatei einzufügen. Wenn die Datei jedoch noch nicht vorhanden ist, wird sie erstellt. Während >> Der Operator wird verwendet, um den Text in der Datei anzuhängen. Der schlafen Der Befehl wird verwendet, um die Aktivität des Dienstes für eine Mindestdauer von einer Minute aufrechtzuerhalten.

Machen Sie nun das Skript ausführbar, indem Sie die erforderlichen Berechtigungen erteilen.

Sudo chmod +x myscript.sh

Das Skript verfügt nun über die Ausführungsberechtigung. Fahren wir mit dem nächsten Abschnitt fort.

Notiz: Um die Servicedatei fehlerfrei zu machen, verwenden Sie im Bash-Skript den absoluten Pfad der Datei.

2. Erstellen einer .service-Datei

Erstellen Sie als Nächstes eine Dienstdatei mit dem .Service Verlängerung. Die Servicedatei muss im erstellt werden /etc/systemd/system Verzeichnis. Navigieren Sie zunächst mit in dieses Verzeichnis CD Befehl.

CD / usw / systemd / System

Sie können die Servicedatei jedoch in einem beliebigen Verzeichnis erstellen und diese Datei später in dieses Verzeichnis verschieben.

Ich erstelle eine Servicedatei mit myservice.service Name.

Sudo Nano myservice.service

Fügen Sie nun der Datei die folgenden Zeilen hinzu.

[ Einheit ]

Beschreibung =Mein Service

[ Service ]

Typ =einfach

ExecStart = / Behälter / bash / heim / sich selbst / script.sh

Neu starten =bei Fehler

[ Installieren ]

Gesucht von =multi-user.target

Beachten Sie, dass [Einheit], [Dienst], Und [Installieren] Sind Groß- und Kleinschreibung beachten . Die Servicedatei funktioniert nicht, wenn einer von ihnen falsch angegeben ist, z. B. [UNIT] oder [SERVICE].

Der Dienstname wird als angegeben Mein Service im Beschreibung Richtlinie der [Einheit] Abschnitt.

Der Typ des Dienstes ist einfach im [Service] Abschnitt, der der Standardtyp ist. Gabelung , One-Shot , benachrichtigen , dbus , und Idle sind einige der anderen Typen.

Wenn Sie den Dienst benutzerspezifisch gestalten möchten, dann ist der Benutzer Die Direktive kann auch mit dem Benutzernamen des Benutzers verwendet werden. Durch die Verwendung dieser Anweisung wird die Dienstbenutzerberechtigung abhängig gemacht.

Während ExecStart Die Direktive enthält den vollständigen Pfad der ausführbaren Datei. Im obigen Beispiel die Skriptdatei myscript.sh wird in der gespeichert /home/sam/ Verzeichnis. Diese Direktive verwaltet tatsächlich, was ausgeführt werden soll, wenn ein Dienst von systemd aufgerufen wird. Wenn der vollständige Pfad des Befehls nicht angegeben ist, wird er automatisch aufgelöst, um absolute Pfade wie z /usr/local/bin , /usr/bin/, Und /Behälter . Es ist völlig in Ordnung, den Namen der ausführbaren Datei zu verwenden, solange sie sich in den Standardbefehlsverzeichnissen befindet. Geben Sie andernfalls jedoch den absoluten Pfad an. Beachten Sie, dass auch mehrere Befehle verwendet werden können, die durch Semikolon (;) getrennt sind.

Der [Installieren] Abschnitt ist optional; Es zeigt jedoch an, wie der Dienst aktiviert ist. Der Gesucht von Die Direktive verwendet die Zieldateien auf Run-Level als Parameter. Verschiedene Zieldateien zeigten unterschiedliche Runlevel des Systems an, z ausschalten , Rettung , Mehrbenutzer , grafisch , Und neu starten .

Der Mehrbenutzerziel bedeutet, dass der Dienst aktiviert wird, wenn das System in einem Zustand ist, der nichtgrafische Mehrbenutzersitzungen zulässt.

3. Aktivierung des Dienstes

Um den Dienst zu aktivieren, laden Sie zunächst die Systemd-Konfigurationen mit neu systemctl Dienstprogramm.

Sudo systemctl daemon-reload

Aktivieren Sie anschließend den Dienst erneut mit systemctl Befehl mit aktivieren .

Sudo systemctl aktivieren myservice.service

Überprüfen Sie zur Überprüfung den Status des Dienstes mithilfe von systemctl-Status Befehl.

Der Dienst wird erfolgreich ausgeführt.

Lesen wir nun die Textdatei meinedatei.txt Der in der erstellte Dienst /heim Verzeichnis.

So erstellen Sie eine Systemd-Dienstdatei für normale Benutzer

Das Verfahren zum Erstellen der Servicedatei für einen normalen Benutzer ähnelt dem Verfahren zum Erstellen einer Servicedatei durch den Administrator. Allerdings ist das Verzeichnis zum Speichern der Servicedatei für normale Benutzer ein anderes. Normale Benutzer müssen ihre Servicedateien im ablegen ~/.config/systemd/user . Dieses Verzeichnis muss mit erstellt werden mkdir Befehl.

mkdir ~ / .config / systemd / Benutzer

Um den Dienst durch einen normalen Benutzer zu aktivieren -Benutzer Befehl wird mit eingefügt systemctl anstatt Sudo .

systemctl --Benutzer Daemon-Neuladen

systemctl --Benutzer aktivieren SERVICE-NAME.service

systemctl --Benutzer Status SERVICE-NAME.service

Der -Benutzer Die Option wird zum Verwalten der systemd-Dienstdateien des Benutzers verwendet.

So entfernen Sie die Servicedatei

Um die Dienstdatei zu entfernen, muss der Dienst zunächst gestoppt werden.

Sudo systemctl stoppt SERVICE-NAME.service

Überprüfen Sie den Status mit systemctl-Status Befehl, um zu erfahren, ob der Dienst gestoppt ist oder nicht. Entfernen Sie dann die Servicedatei mit dem rm Befehl.

Sudo rm / usw / systemd / System / SERVICE-NAME.service

Laden Sie nun die Datei neu systemd Aufbau.

Sudo systemctl daemon-reload

Abschluss

Der benutzerdefinierte systemd-Dienst ist in verschiedenen Szenarien von Vorteil. In dieser Anleitung haben wir gelernt, wie man eine benutzerdefinierte systemd-Dienstdatei für einen Systemadministrator erstellt und wie normale Benutzer eine Dienstdatei erstellen können. Darüber hinaus sehen wir auch die Vorgehensweise zum Entfernen der Servicedatei.