So erstellen oder konfigurieren Sie einen Dienst auf Linux-Servern mit Systemd

Systemd ist eine Reihe von Daemons, Tools, Bibliotheken und Diensten, die entwickelt wurden, um alle Dienste zentral zu verwalten und zu konfigurieren Linux Betriebssysteme. Systemd ermöglicht es uns, direkt mit dem Kernel des Betriebssystems zu interagieren, und heute ist dieser Daemon in der überwiegenden Mehrheit der Linux-basierten Distributionen wie Debian vorhanden. Ubuntu und viele mehr. In Anbetracht dessen, dass es für die Kontrolle der Systemdienste zuständig ist, ist es wichtig zu wissen, wie man selbst einen Dienst erstellt, ihn startet und stoppt, wann immer wir wollen, etwas Grundlegendes, um unser Betriebssystem richtig zu verwalten. Heute werden wir Ihnen in diesem Artikel beibringen, wie Sie Ihre eigenen Dienste auf Linux-Systemen erstellen.

Erstellen oder konfigurieren Sie einen Dienst auf Linux-Servern mit Systemd

Heutzutage ist die überwiegende Mehrheit der Anwendungen auf Systemd angewiesen, um ihre eigenen Daemons zu erstellen, die auch als „Daemon“ oder einfach als Dienste im System bezeichnet werden. Wenn wir ein neues Programm installieren und es beim Start des Betriebssystems ausgeführt werden muss, wird es direkt eine Datei enthalten, die speziell dafür entwickelt wurde, dass Systemd es erkennt und bei jedem Start des Betriebssystems startet, aber es ist sehr möglich, dass nicht alle Anwendungen diese Funktionalität enthalten, und wenn wir möchten, dass sie mit dem Betriebssystem booten, müssen wir selbst eine bestimmte Konfiguration erstellen, damit sie automatisch startet und ständig im System ist.

In dem folgenden Beispiel, das wir Ihnen zeigen werden, werden wir einen Dienst für die RSS-Update-Engine von Tiny Tiny erstellen, obwohl wir durch einige geringfügige Änderungen, die wir später angeben werden, in der Lage sein werden, ihn zur Ausführung beliebiger zu verwenden Skript, Befehl oder Dienst, den wir in unserem Betriebssystem mit Systemd im Hintergrund ausführen müssen.

Eine der Stärken von Systemd ist, dass es auf allen Linux-basierten Betriebssystemen genau gleich funktioniert, egal ob Sie Debian, Ubuntu oder eine andere Distribution verwenden, es ist auf allen genau gleich und mit der gleichen Konfiguration Datei wird Ihnen dienen.

Erstellen Sie Ihren eigenen Dienst oder Daemon

Als erstes müssen wir den Pfad eingeben, in dem sich alle Systemd-Dienste befinden. In unserem Fall geben wir Ihnen die Beispiele mit Debian, aber der Pfad in den verschiedenen Betriebssystemen ist genau gleich, es sollte keinen geben Unterschied.

Die Route, zu der wir gehen müssen, um jeden einzelnen der Dienste zu sehen, ist „/etc/systemd/system/“. Wenn wir also den Befehl „cd“ verwenden, können wir problemlos zu dieser Route gehen:

cd /etc/systemd/system/

Wenn wir alle Dienste mit „ls“ auflisten, können wir alle standardmäßig erstellten Dienste sehen. Abhängig von den Programmen, die Sie installiert haben, haben wir einige Dienste oder andere.

Sobald wir uns im richtigen Pfad befinden, müssen wir nun eine Datei erstellen, die auf „service“ endet, wie Sie im vorherigen Screenshot sehen können. Die gesamte auszuführende Konfiguration muss sich in dieser Konfigurationsdatei befinden, in unserem Fall erstellen wir eine Datei mit dem Namen « ttrsupdate.service » durch Ausführen des Befehls:

sudo nano ttrssupdate.service

Falls Sie vi oder vim verwenden möchten, können Sie dies auch ohne Probleme tun, egal welchen Texteditor Sie verwenden, das Wichtigste ist der Inhalt der Datei, um den benutzerdefinierten Daemon zu erstellen, und dass sie die Erweiterung „service“ haben wie Sie gesehen haben. Wir müssen bedenken, dass es zum Erstellen einer Datei in diesem Pfad unbedingt erforderlich ist, root zu sein, um sie zu erstellen, oder „sudo“ zu verwenden, um sie ordnungsgemäß erstellen zu können.

Der Inhalt der Datei sieht in diesem Beispiel wie folgt aus:

[Unit] Description=Daemon TTRSS Auto-Update Feeds
After=network.target mysql.service
[Service] User=www-data
ExecStart=/var/www/html/rss/update_daemon2.php
[Install] WantedBy=multi-user.target

Wir müssen bedenken, dass dieser Dienst immer mit dem Betriebssystem beginnt, es sei denn, Sie entscheiden sich dagegen.

Als Nächstes zeigen wir Ihnen, was jeder der Teile der vorherigen Konfigurationsdatei bedeutet:

  • Beschreibung: Wir können hier den Namen und eine Beschreibung dessen eingeben, was unser Daemon tun wird. In diesem Fall können wir eingeben, was wir wollen, es ist eine Beschreibung für den Systemadministrator, damit er weiß, was der Daemon tut, ohne nach weiterem Code suchen zu müssen.
  • Nach: Wir werden angeben, ob es nach anderen Diensten oder Systemkomponenten geladen werden soll. Dies ist etwas sehr Wichtiges, denn wenn unser Dienst einen anderen Dienst erfordert, müssen wir eine bestimmte Reihenfolge einhalten. Es gibt auch eine andere Anweisung namens „Before“, die das Gegenteil bewirkt und angibt, dass unser Dienst vor dem anderen von uns angegebenen Dienst ausgeführt wird.
  • Benutzer - Der Benutzer des Betriebssystems, das den Daemon ausführt. Es kann auch mit Group arbeiten. Dies ist sehr wichtig, denn abhängig von den Berechtigungen, die der Dienst benötigt, müssen wir ihn mit root, unserem nicht privilegierten Benutzer oder einem anderen Systembenutzer ausführen.
  • AusführenStart: Wir müssen den absoluten Pfad (sie funktionieren nicht relativ) zu dem Skript oder der Binärdatei angeben, die wir ausführen möchten, um den betreffenden Dienst zu starten.
  • Gesucht von: Verwendungsrichtlinien und andere Abhängigkeiten.

Sobald wir unsere .service-Datei konfiguriert haben, wird empfohlen zu überprüfen, ob der Besitzer der Datei root ist und ob die Gruppe auch ist, außerdem sollten wir Berechtigungen 777 für die betreffende Datei konfigurieren, wir können es so machen:

chmod 777 ttrssupdate.service

Jetzt, da wir es vollständig konfiguriert haben, müssen wir es aktivieren und wir werden Ihnen beibringen, wie Sie den Dienst verwalten.

Verwalten Sie den erstellten Dienst

Nachdem wir den Dienst im Betriebssystem erstellt haben, müssen wir ihn mit dem Befehl „enable“ aktivieren, bevor wir ihn verwenden können. Dazu müssen wir einfach den Befehl „systemctl enable“ gefolgt vom Namen des gerade erstellten Dienstes ausführen. Es ist nicht notwendig, dies im selben Pfad auszuführen, in dem die Dateien gespeichert sind, in unserem Fall wäre es:

systemctl enable ttrssupdate.service

Natürlich werden wir nach dem Superuser-Passwort des Systems gefragt, um es richtig zu aktivieren. Für diese Art von Aufgabe ist es wichtig, Superuser-Berechtigungen zu haben, sonst können wir nichts tun.

Nachdem wir den Dienst nun aktiviert haben, müssen wir ihn beim ersten Mal manuell starten. Ab diesem Moment wird es immer ausgeführt, auch wenn wir das Betriebssystem neu starten, wird dieser Dienst auch automatisch gestartet.

systemctl start ttrssupdate.service

In diesen Momenten ist der Dienst in unserem Betriebssystem aktiv. Obwohl systemd ziemlich kompliziert sein kann, wenn wir uns mit fortgeschrittenen Dingen befassen, ist das Erstellen eines Dienstes nicht zu kompliziert, wie Sie in diesem Tutorial gesehen haben. Als Nächstes zeigen wir Ihnen weitere sehr nützliche Befehle zur Verwaltung unseres neu erstellten Dienstes:

  • sudo systemctl daemon-reload: Diese Reihenfolge ermöglicht es uns, alle Dienste erneut zu laden, sehr nützlich, wenn wir mehrere von ihnen ändern, auf diese Weise können wir es global mit allen tun.
  • sudo systemctl stop ttrssupdate.service: Mit diesem Befehl können wir den zuvor gestarteten Dienst stoppen. Durch Stoppen des Dienstes können wir Änderungen vornehmen, die beim Start nicht vorgenommen werden konnten. Um beispielsweise Änderungen zu übernehmen, müssen wir den Dienst auch stoppen und starten .
  • sudo systemctl restart ttrssupdate.service: Ermöglicht uns, den Dienst neu zu starten (es ist dasselbe wie das Stoppen und Starten, aber in einem einzigen Befehl).
  • journalctl -u ttrssupdate.service: ermöglicht es uns, das vom betreffenden Dienst generierte Protokoll anzuzeigen, falls bei der Ausführung ein Fehler oder eine Warnung auftritt, die zu zukünftigen Problemen führen könnte.
  • sudo systemctl status ttrssupdate.service: Ermöglicht es uns, die Statusinformationen über den betreffenden Dienst anzuzeigen. Dieser Befehl ist wichtig, um festzustellen, ob er ausgeführt wird oder nicht.

Wie Sie gesehen haben, ist das Erstellen eines Dienstes mit systemd recht einfach, und die Verwaltung mit den verschiedenen Befehlen, die wir angegeben haben, ist ebenfalls recht einfach.