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.