Script as a Service

Es gibt mehrere Möglichkeiten, wie du ein Programm als Dienst unter Linux ausführen kannst. z. B. crontab, .bashrc usw.

Hier werde ich jedoch auf systemd eingehen. Ich habe ursprünglich nach einer Möglichkeit gesucht, mein Python-Skript als Hintergrunddienst auszuführen.

Python

Erstelle eine beliebige Python Datei. Hier nenne ich sie test.py

import time
from datetime import datetime

while True:
    with open("timestamp.txt", "a") as f:
    f.write("Der aktuelle Timestamp ist: " + str(datetime.now()))
    f.close()
    time.sleep(10)

Dieses Script schreibt den aktuellen Timestamp alle 10 Sekunden in die Datei timestamp.txt im root Verzeichnis /. Wenn du die Datei woanders haben möchtest, musst du noch entsprechend einen Pfad mit angeben.

Dienst

Den Dienst legen wir unter /etc/systemd/system/test.service an.

[Unit]
Description=Mein Python Service
After=multi-user.target

[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/python3 /home/<username>/test.py

[Install]
WantedBy=multi-user.target

<username> musst du noch mit deinen Benutzernamen ersetzen damit der Dienst auch dein Script findet.

ExecStart enthält das Kommando welches ausgeführt werden soll. Hier haben wir zuerst den Pfad zu Python gefolgt vom Pfad zu deinem Script.

Das Restart Flag ist auf always gesetzt damit das Script immer gestartet wird sobald dein Computer hochgefahren wird.

Weitere Informationen dazu findest du hier.

Neu laden

Damit der Dienst auch funktioniert, müssen wir ihn zuerst bekannt machen. Das machst du mit folgendem Befehl: sudo systemctl daemon-reload

Aktivieren

Nun lass uns den Dienst noch aktivieren: sudo systemctl enable test.service

Starten

Und den Dienst starten: sudo systemctl start test.service

Jetzt ist der Dienst aktiv und arbeitet.

Beenden

Beenden können wir unseren Dienst mit sudo systemctl stop test.service

Restart

Und neustarten mit sudo systemctl restart test.service

Status

Status kontrollieren: sudo systemctl status test.service

Fertig

Dies war eine sehr grundlegende Einführung in systemd die sich an Anfänger richtet welche mit dem Schreiben ihrer eigenen Systemd Dienste beginnen möchten.

Diese Anleitung gilt natürlich nicht nur für Python Scripts. Du kannst damit nahezu jedes Script oder Programm ausführen lassen.

Wenn du tiefer eintauchen möchtest, findest du bei digital ocean eine ausführlichere Version.