So erstellen Sie Dienste in Ubuntu 16.04 mit systemd

Seit Ubuntu 15.04 Vivid Vervet wurde der Systemd-Daemon-Manager als Ersatz für Upstart in Ubuntu integriert. Wir werden uns nicht mit der Frage befassen, ob es eine gute oder eine schlechte Entscheidung von Canonical war, systemd einzuführen, aber da es unter Ubuntu 16.04 viele Programme gibt, die systemd zum Verwalten ihrer Dämonen verwenden, war es notwendig, ein kleines Tutorial zum Erstellen von Diensten zu schreiben in Ubuntu 16.04 mit systemd .

Als wir den Artikel über das Erstellen einer Seedbox mit Deluge oder die Installation von Tiny Tiny RSS veröffentlichten , wurde in beiden Tutorials ein Dienst erstellt, den wir mit systemd konfiguriert haben. Aus diesem Grund ist es wichtig, die Grundlagen zu kennen, um unsere eigenen Services zu erstellen und diese korrekt zu konfigurieren .

Was ist ein Dämon?

Beginnen wir damit, zu erklären, was ein Dämon intuitiv ist, ohne auf technische Details einzugehen, damit alle Benutzer darauf eingehen können. Wir können einen Dämon als einen Prozess definieren, der im Hintergrund abläuft und zur Selbstverwaltung in der Lage ist, ohne dass der Benutzer damit interagieren muss.

In Debian-Betriebssystemen und ihren Derivaten wie Ubuntu haben wir als Dämonenmanager das sogenannte systemd .

So erstellen Sie Dienste in Ubuntu 16.04 mit systemd.

Zunächst müssen wir die Unit-Dateien kennen, mit denen die Dienste konfiguriert werden. Unit-Dateien sind Textdateien, die die verschiedenen Anweisungen enthalten und standardmäßig im Pfad /etc/systemd/system/ .

Grundlagen über Unit-Dateien, was sie sind und wofür sie sind.

Die Namen der Unit-Dateien werden durch unit_name (Unit-Name) und type_extension (Erweiterungstyp) definiert . Um dies besser zu verstehen, schlagen wir einen Beispielnamen vor, der midemonio.service .

Hier unterscheiden wir einerseits midemonio als unit_name und andererseits, dass die type_extension ist.

See also  Woher weiß ich, welche Version von MySQL oder MariaDB ich installiert habe?

Als unit_name wir einen Namen wählen, der uns hilft, den Teufel zu identifizieren, aber als type_extension wir je nach Funktionalität des Dämons nur aus zwölf Möglichkeiten wählen:

  • .service
  • .target
  • .automount
  • .device
  • .mount
  • .path
  • .scope
  • .slice
  • .snapshot
  • .socket
  • .swap
  • .timer

In diesem Lernprogramm werden wir, da wir beabsichtigen, einen Dienst zu erstellen, nur mit dem Erweiterungstyp .service .

Zusätzlich können Ordner vorhanden sein, die den Gerätedateien beigefügt sind, um zusätzliche Konfigurationen hinzuzufügen. Wir werden diesen Aspekt in diesem Tutorial nicht behandeln, aber es ist gut, ihn so zu benennen, dass wir wissen, dass diese Möglichkeit besteht. Im Zweifelsfall können Sie jederzeit die zusätzliche Dokumentation der Gerätedateien einsehen (in Englisch) .

Erstellen der Unit-Datei zum Konfigurieren des Dienstes.

Zuerst müssen wir die Unit-Datei mit dem entsprechenden unit_name und der entsprechenden unit_name type_extension erstellen. Ich erstelle die Unit-Datei ejemplo.service mit den Befehlen:
sudo touch /etc/systemd/system/ejemplo.service
sudo chmod 664 /etc/systemd/system/ejemplo.service
sudo nano /etc/systemd/system/ejemplo.service

Als Inhalt der Unit-Datei pego:

 [Unit] Description=servicio de ejemplo After=network.target mysql.service  [Service] User=www-data ExecStart=/ruta/script/demonio Restart=on-failure  [Install] WantedBy=multi-user.target 

Ich denke, der Inhalt der Unit-Datei ist selbsterklärend, aber wir werden trotzdem die verschiedenen Teile und Optionen kommentieren. Wir sehen, dass die Datei in drei Teile unterteilt ist:

  • [Unit] : In diesem Abschnitt werden die allgemeinen Optionen festgelegt, die nicht von der Art der Erweiterung abhängen.
  • [Service] : In diesem Abschnitt werden die spezifischen Optionen für den ausgewählten Erweiterungstyp aufgeführt. Da es sich in unserem Beispiel um type_extension des Typs .service , heißt dieser Abschnitt [Service] . Wenn es sich hingegen um einen .socket Typ handelt, wird dieser Abschnitt mit den übrigen Erweiterungstypen als [Socket] usw. bezeichnet.
  • [Install] : Enthält Informationen zur Installation des Dienstes, die sich auf die Ausführung der systemctl disable systemctl enable und systemctl disable systemctl enable systemctl disable die später erläutert werden.
See also  Optimieren von KeepAlive auf Apache-Servern

Die wichtigsten Optionen für Unit-Dateien sind:

  • Die After Direktive, die die Reihenfolge festlegt, in der die verschiedenen Unit-Dateien ausgeführt werden. Es gibt auch die Before Direktive, die das Gegenteil bewirkt. In unserem Fall sehen wir, dass ejemplo.service wird, nachdem mysql.service und mysql.service .
  • Die User Direktive legt den Benutzer fest, unter dem das Daemon-Skript ausgeführt wird. Sie können die Gruppe auch mit der Group Direktive festlegen. In unserem Fall wird das Dämonenskript unter dem Benutzer www-data .
  • Die ExecStart Direktive legt das auszuführende Skript oder den auszuführenden Befehl fest.

Dies ist eine einfache Unit-Datei, die als Beispiel dient. Um jedoch alle verfügbaren Optionen anzuzeigen, besuchen Sie die offizielle Manual-Seite systemd.service (5) (in englischer Sprache) .

Verwalten Sie den mit dem Befehl systemctl erstellten Dienst.

Wir müssen nur den Befehl systemctl , mit dem wir systemd verwalten können. Da unser Dienst ejemplo.service bereits erstellt wurde, müssen wir ihn mit dem folgenden Befehl in die Systemstartsequenz einbinden:
sudo systemctl enable ejemplo.service

Wir haben auch den Befehl systemctl disable ejemplo.service , um den Dienst aus der Startsequenz zu entfernen. Mit dem systemctl daemon-reload starten systemctl daemon-reload den systemd-Prozess neu und er wird verwendet, wenn wir einen Dienst hinzufügen oder löschen.

Um den Dienst zu starten, verwenden wir den Befehl:
sudo systemctl start ejemplo.service

Auf die gleiche Weise können wir:

  • sudo systemctl stop ejemplo.service Sie den Dienst: sudo systemctl stop ejemplo.service
  • Starten Sie den Dienst neu: sudo systemctl restart ejemplo.service
  • Erhalten Sie Informationen zum Servicestatus: sudo systemctl status ejemplo.service

Vergessen wir nicht, dass dieser Leitfaden als kleine Einführung gedacht ist, die als Kontaktperson für die Erstellung von Diensten mit systemd dient, da ein Buch erforderlich wäre, um das Problem eingehender zu behandeln. Ich hoffe, dass es von nun an kein Albtraum mehr ist, mit systemd Dienste in Ubuntu zu erstellen.

See also  So entfernen Sie das Windows 10-Aktualisierungssymbol

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *