Frage – Wie man ein Python-Skript mit systemd automatisch ausführt. So erstellen Sie einen eigenen systemd-Dienst mit Python-Skript. So konfigurieren Sie das Python-Skript so, dass es als systemd startet. Wie verwalte ich den Python-Dienst mit systemctl?
Verwenden Sie dieses Tutorial, um Ihr Python-Skript als Systemdienst unter systemd auszuführen. Sie können Ihr Skript einfach mit dem Befehl systemctl starten, stoppen oder neu starten. Dies ermöglicht auch die automatische Ausführung des Python-Skripts beim Systemstart.
Schritt 1 – Dummy-Python-Anwendung
Zunächst einmal habe ich ein Dummy-Python-Skript verwendet, das auf einem bestimmten Port lauscht. Bearbeiten Sie eine Python-Datei wie folgt
sudo vi /usr/bin/dummy_service.py
und fügen Sie den folgenden Inhalt für Dummy hinzu. Sie können Ihr eigenes Python-Skript gemäß den Anforderungen verwenden.
Python123456789101112 | #!/usr/bin/python3 import sockets =socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.bind(("localhost", 9988))s.listen(1) while True:conn, addr =s.accept() data =conn.recv(1024) conn.close() my_function_that_handles_data(data) |
Schritt 2 – Servicedatei erstellen
Erstellen Sie nun wie folgt eine Servicedatei für systemd. Die Datei muss .service haben Erweiterung unter /lib/systemd/system/ Verzeichnis
sudo vi /lib/systemd/system/dummy.service
und fügen Sie den folgenden Inhalt hinzu. Ändern Sie den Anzeigeort für den Dateinamen des Python-Skripts. Aktualisieren Sie auch die Beschreibung.
[Unit] Description=Dummy Service After=multi-user.target [email protected] [Service] Type=simple ExecStart=/usr/bin/python3 /usr/bin/dummy_service.py StandardInput=tty-force [Install] WantedBy=multi-user.target
Schritt 3 – Neu hinzugefügten Dienst aktivieren
Ihr Systemdienst wurde Ihrem Dienst hinzugefügt. Lassen Sie uns den systemctl-Daemon neu laden, um die neue Datei zu lesen. Sie müssen diesen Dämon jedes Mal neu laden, nachdem Sie Änderungen in der .service-Datei vorgenommen haben.
sudo systemctl daemon-reload
Aktivieren Sie nun den Dienst so, dass er beim Systemstart gestartet wird, und starten Sie den Dienst auch mit den folgenden Befehlen.
sudo systemctl enable dummy.service sudo systemctl start dummy.service
Schritt 4 – Start/Neuen Dienst starten/Status
Überprüfen Sie abschließend den Status Ihres Dienstes mit dem folgenden Befehl.
sudo systemctl status dummy.service
Verwenden Sie die folgenden Befehle, um Ihr Wartungshandbuch zu stoppen, zu starten und neu zu starten.
sudo systemctl stop dummy.service #To stop running service sudo systemctl start dummy.service #To start running service sudo systemctl restart dummy.service #To restart running service