$HOME
verweist auf das Basisverzeichnis des Benutzers, der das Skript ausführt. Systemd-Dienste werden mit root gestartet, dies wird wahrscheinlich versucht /root/theFolder/run.sh
. Verwenden Sie absolute Pfade in Servicedateien.
Sie haben auch die forking
Option gesetzt. Dies wird für das Programm benötigt, das sich im Hintergrund befindet. Tut Ihr Skript dies? Die meisten tun dies nicht, und wenn dies bei Ihnen nicht der Fall ist, sollten Sie diese Option entfernen, oder systemd wartet darauf, dass Ihr Skript beendet wird, um es als gestartet zu beanspruchen.
Auch Systemdienstdateien, die auf Skripte in Ihrem Home-Verzeichnis verweisen, sind nicht empfehlenswert und möglicherweise ein Sicherheitsrisiko. Da sie als Root ausgeführt werden, kann jeder, der sie ändern kann, möglicherweise Root-Zugriff auf Ihren Computer erhalten. Es ist weitaus besser, das Skript zu kopieren /usr/local/bin
und sicherzustellen, dass es im Besitz des Benutzers ist und nur von root geschrieben werden kann, um dies zu verhindern. Es ist auch eine gute Idee, das Skript unter Verwendung der Optionen User=
und Group=
in der Servicedatei als nicht privilegierter Benutzer auszuführen .
Wenn Sie es als Benutzer ausführen möchten, ist es besser, die Servicedatei einzutragen ~/.config/systemd/user/
und sie mit zu starten / zu aktivieren systemctl --user enable yourservice && systemctl --user start yourservice
(beachten Sie, dass Sie als Benutzer ausgeführt werden, der nicht root ist). Sehen Sie diese für weitere Informationen über Benutzer - Service - Dateien.
systemctl daemon-reload
nach dem Erstellen Ihrer Unit-Datei ausgeführt?