Das Wesen:Hinzufügen eines Python-Daemon zum systemd
ich einen Daemon erstellt haben einige Aufgaben auf einem Remote-Plattform zu verwalten. Es ist in Python geschrieben und akzeptiert Start, Stopp und Neustart von Argumenten. Beim Versuch, es zum Systemd hinzuzufügen (so würde es beim Systemstart starten und beim Herunterfahren usw. gestoppt werden), stieß ich auf ein Problem: Es scheint Dämon laufen zu sehen, aber ich bin nicht sicher, ob es tatsächlich funktioniert, weil Neustart oder Status kehrt mit einem Fehler anfordernden:
[[email protected] ~]# systemctl restart mydaemon
Failed to restart mydaemon.service: Unit mydaemon.service failed to load: No such file or directory.
[[email protected] ~]# systemctl status mydaemon
● mydaemon.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
die Besonderheiten:
der Code selbst folgt mit sehr wenigen Änderungen der bekannte example von Sander Marechal. An sich funktioniert es ohne Probleme und reagiert angemessen auf alle akzeptierten Argumente. Die PID wird in /tmp/my-daemon.pid
gespeichert.
Die systemd Service-Datei im Verzeichnis Benutzer-Daemons: /usr/lib/systemd/user/mydaemon.service
, und der Code ist wie folgt:
[Unit]
Description=The user daemon
[Service]
Type=forking
ExecStart=/usr/bin/python /home/frcr/mydaemon_v01.py start
ExecStop=/usr/bin/python /home/frcr/mydaemon_v01.py stop
RestartSec=5
TimeoutSec=60
RuntimeMaxSec=infinity
Restart=always
PIDFile=/tmp/my-daemon.pid
[Install]
WantedBy=multi-user.target
systemctl
den Status als aktiv zurückkehrt, aber nur, wenn die pid vorgesehen:
[[email protected] ~]# systemctl status 9177
● session-481.scope - Session 481 of user user
Loaded: loaded
Drop-In: /run/systemd/system/session-481.scope.d
└─50-After-systemd-logind\x2eservice.conf, 50-After-systemd-user-sessions\x2eservice.conf, 50-Description.conf, 50-SendSIGHUP.conf, 50-Slice.conf
Active: active (running) since Tue 2016-05-17 06:24:51 EDT; 1h 43min ago
CGroup: /user.slice/user-0.slice/session-481.scope
├─8815 sshd: [email protected]/0
├─8817 -bash
├─9177 python /home/user/mydaemon_v01.py start
└─9357 systemctl status 9177
Ich habe eine similar question hier auf Stack-Überlauf gesehen, aber es scheint nicht die Lösung für mein Problem zu haben.
Ich nehme an, ich vermisse etwas sehr offensichtlich wegen des schieren Mangels an Erfahrung mit Systemd, und ich wäre sehr dankbar, wenn jemand es für mich zeigen oder mir die richtige Richtung zeigen könnte. Danke im voraus und bitte verzeih mir meine verrückten Englischkenntnisse.
Danke, das ist wirklich hilfreich. Ich werde versuchen, beim nächsten Mal mehr auf die Dokumente zu achten. –