Dienste unter Linux werden gestartet, sobald Ihr System startet oder neu startet. So können Sie einen automatisch startenden systemd-Dienst auf Ihrem Linux-PC erstellen.
systemd ist der Dienstmanager für viele bekannte Linux-Distributionen. Ein Dienst ist eine Einheit eines Programms, die normalerweise im Hintergrund ausgeführt wird. Dienste starten naturgemäß automatisch, sobald das System hochfährt, und können unbeaufsichtigt ausgeführt werden.
Wenn Sie eine automatisch startende Aufgabe oder ein automatisch startendes Programm erstellen müssen, das bei jedem Systemstart oder Neustart ausgeführt wird, können Sie die Erstellung eines neuen Dienstes in Betracht ziehen. Erfahren Sie, wie Sie unter Linux einen neuen, benutzerdefinierten Systemd-Dienst erstellen.
Schritt 1: Erstellen der Servicedatei
Zum Erstellen einer neuen systemd-Dienstdatei sind einige Schritte erforderlich. Der erste Schritt besteht darin, die Unit-Datei für den Dienst zu erstellen. Bevor Sie eine Servicedatei erstellen, müssen Sie deren Struktur verstehen.
Lassen Sie uns die Servicedatei untersuchen, indem wir eine echte, funktionierende Servicedatei von Ihrem Linux-System abrufen. Unten sehen Sie die Dienstdatei für den vmtools-Daemon-Dienst.
Dieser spezielle Dienst ist möglicherweise nicht auf Ihrem System vorhanden, es sei denn, Sie führen auch Linux auf VMware mit installierten VMware-Tools aus. Der betreffende Dienst ist nicht wichtig, da alle Dienste bzw. Service-Unit-Dateien dieselbe Grundstruktur mit einigen erforderlichen Anpassungen haben.
Alle systemd-Dienstdateien müssen drei Abschnitte haben: [Service], [Einheit], Und [Installieren]und einige Parameter unter jedem Abschnitt. Hier erfahren Sie, was jeder Abschnitt enthält und warum er wichtig ist:
1. Einheit
Der Einheit Der Abschnitt enthält wichtige Metadaten wie eine Beschreibung und Abhängigkeiten des Dienstes. Es hat drei Parameter: Beschreibung, Vor, Und Nach. Wie das Gleiche vermuten lässt, ist die Beschreibung Der Parameter stellt einen Kontext des Dienstes und dessen Funktion bereit.
Der Vor Und Nach Parameter definieren die Bedingungen, die erfüllt sein müssen, damit der Dienst ausgeführt werden kann. Wenn Sie beispielsweise einen Webserverdienst starten, möchten Sie, dass dieser erst gestartet wird, wenn der Netzwerkdienst online ist. Sie würden also den Wert festlegen Nach Parameter für den Netzwerkdienst.
2. Service
Der Service Abschnitt enthält zwei obligatorische Parameter: ExecStart, Typ, und ein paar andere optionale Parameter wie ExecReload, und mehr.
ExecStart Definiert den Befehl, der ausgeführt werden soll, wenn der Dienst startet, während der Typ Der Parameter bestimmt die Art des zu erzeugenden Prozesses.
3. Installieren
Dieser Abschnitt und seine Daten werden immer dann aufgerufen, wenn Sie den Dienst mit aktivieren oder deaktivieren der systemctl-Befehl.
Es hat ein paar Parameter. Eine der häufigsten und notwendigen ist Gesucht von. Der Gesucht von Der Parameter definiert die Zieleinheiten, die gestartet werden sollen, wenn der Dienst aktiviert wird. Der Standardwert ist Mehrbenutzerziel.
Die hier genannten Parameter sind nicht die einzigen Parameter, die Sie in einer Unit-Datei festlegen können. Die vollständige Liste der Parameter finden Sie im Offizielle systemd.exec-Dokumentation oder durch Eintippen man systemd.exec in einem Terminal.
Eine systemd-Service-Unit-Datei endet immer mit einem „.Service" Erweiterung und muss in der gespeichert werden /etc/systemd/system/ Verzeichnis. Erstellen Sie die Servicedatei mit dem Touch-Befehl mit erhöhten Privilegien, indem Sie ihm das voranstellen Sudo Befehl:
sudo touch /etc/systemd/system/.Service
Nachdem Sie nun die Dienstdatei erstellt haben, beginnen wir damit, sie mit der erforderlichen Syntax zu füllen, damit der Dienst gültig und funktionsfähig ist.
Schritt 2: Konfigurieren der Servicedatei
Zur Demonstration erstellen Sie einen Beispieldienst, der ausgeführt wird Nmap, um die Ports auf Ihrem Computer zu scannen und speichern Sie die Ausgabe alle dreißig Sekunden in einer Datei. Um diese Aufgabe zu erfüllen, strukturieren Sie die Service-Unit-Datei wie folgt:
[Einheit]
Beschreibung=Demonstration des benutzerdefinierten Nmap-Dienstes.
After=network.target[Service]
Typ=einfach
Benutzer=root
ExecStart=/usr/bin/nmap -sS -O -oN /home//results.txt localhost
Neustart=immer
RestartSec=30
[Installieren]
WantedBy=multi-user.target
Obwohl die hier genannten Parameter bereits zuvor erläutert wurden, wollen wir uns noch einmal ansehen, wie sie sich auf unseren neu erstellten Dienst auswirken, und auch die in dieser Einheit neu eingeführten Parameter untersuchen: Neu starten, RestartSec, Und Benutzer.
Die Parameter in den einzelnen Abschnitten bedeuten Folgendes:
- Beschreibung: Für Menschen lesbarer Text zur Beschreibung der Funktionalitäten des Dienstes.
- After=network.target: Gibt systemd vor, von welchem Dienst dieser Dienst abhängig ist Netzwerk.Ziel und sollte erst nach dem starten Netzwerk.Ziel Der Dienst wurde gestartet. Beachten Sie, dass Nach dient nicht dazu, eine direkte Abhängigkeitsbeziehung herzustellen, sondern fungiert lediglich als Auslöser.
- Typ=einfach: Es gibt mehrere Servicetypen. Allerdings handelt es sich bei der Dienstleistung in dieser Demonstration um einen regulären Vorgang und daher erklären wir dies auch. Alle verschiedenen Werte hierfür finden Sie auf der zuvor verlinkten offiziellen Dokumentationsseite.
- Neustart=immer: Dies bedeutet, dass der Dienst immer neu gestartet werden sollte, wenn er beendet wird.
- RestartSec=30: Dadurch wird das Intervall zwischen jedem Start des Dienstes auf 30 Sekunden festgelegt.
- Benutzer=root: Dies legt fest, dass der Dienst als Root-Benutzer ausgeführt wird. In diesem Fall ist dieser Schritt ein Muss, da Nmap nicht ohne Root-Rechte ausgeführt werden kann.
- ExecStart: Diese Direktive enthält den absoluten Pfad zum auszuführenden Programm sowie alle erforderlichen Flags oder Argumente, die für die ordnungsgemäße Funktion des Programms erforderlich sind.
- WantedBy=multi-user.target: Dieser Parameter in einer Dienstdatei gibt an, welches Ziel den Dienst enthalten oder „wünschen“ soll. Wenn ein Dienst in einem Ziel enthalten ist, bedeutet dies, dass der Dienst gestartet werden soll, wenn das System dieses Ziel während des Startvorgangs erreicht. In diesem Fall sollte der Dienst starten, wenn das System in den Mehrbenutzermodus wechselt. Der Mehrbenutzermodus ist ein Zustand, in dem das System vollständig hochgefahren ist und es mehreren Benutzern ermöglicht, sich anzumelden und das System zu verwenden.
Schritt 3: Aktivieren und Starten des Dienstes
Nachdem Sie nun die Unit-Datei erstellt haben, müssen Sie Ihren Dienst nur noch aktivieren und ausführen. Sie können Ihren Dienst mit dem Befehl systemctl aktivieren und starten.
So verwenden Sie systemctl, um Ihren Dienst zu aktivieren, zu starten und den Status zu überprüfen:
sudo systemctl aktivieren .Service
sudo systemctl start .Service
Sudo systemctl-Status .Service
Jetzt sollte Ihr benutzerdefinierter Dienst betriebsbereit sein! In diesem Fall sollte alle dreißig Sekunden ein Nmap-Scan ausgeführt und die Ausgabe im gespeichert werden results.txt Datei im Home-Verzeichnis.
Das Einrichten eines systemd-Dienstes unter Linux ist einfach!
Auch wenn die Einrichtung eines benutzerdefinierten Dienstes von Grund auf auf den ersten Blick entmutigend erscheinen mag, ist die Einrichtung recht einfach Richten Sie einen selbstausführenden, unbeaufsichtigten Prozess ein, um sich wiederholende Aufgaben für Sie auszuführen und Ihre Leistung zu steigern Produktivität.
Im Demo-Service haben wir kaum an der Oberfläche gekratzt, wie Sie einen Service konfigurieren und einrichten können. Um alles darüber zu erfahren, wie Sie Ihren Service anpassen können, empfehlen wir Ihnen, die im Hinweis verlinkte offizielle Dokumentation durchzulesen.
Wenn Ihnen die Einrichtung und Wartung eines Dienstes eine zu große Aufgabe darstellt, sollten Sie einen alternativen Weg zur Automatisierung wiederkehrender Aufgaben unter Linux in Betracht ziehen.