$HOME
señala al directorio de inicio del usuario que ejecuta el script. Los servicios de Systemd se inician con root, por lo que probablemente lo intente /root/theFolder/run.sh
. Use rutas absolutas en los archivos de servicio.
También tienes la forking
opción establecida. Esto es necesario para los programas que se ejecutan en segundo plano, ¿su script hace esto? La mayoría no lo hace, y si la suya no lo hace, debe eliminar esta opción o systemd estará esperando que su script termine para reclamarlo como iniciado.
También se desaconsejan los archivos de servicio del sistema que apuntan a scripts en su directorio de inicio y posiblemente un problema de seguridad. Dado que se ejecutan como root, cualquier persona que pueda modificarlos puede obtener acceso root a su computadora. Es mucho mejor copiar la secuencia de comandos /usr/local/bin
y asegurarse de que es propiedad y solo se puede escribir por root para detener esto. También es una buena idea ejecutar el script como un usuario sin privilegios utilizando las opciones User=
y Group=
en el archivo de servicio.
Si desea ejecutarlo como su usuario, es mejor poner el archivo de servicio ~/.config/systemd/user/
e iniciarlo / habilitarlo systemctl --user enable yourservice && systemctl --user start yourservice
(tenga en cuenta, ejecutar como su usuario no root). Consulte esto para obtener más información sobre los archivos de servicio del usuario.
systemctl daemon-reload
después de crear tu archivo de unidad?