$HOME
aponta para o diretório inicial do usuário que está executando o script. Os serviços Systemd são iniciados com o root, provavelmente tentando /root/theFolder/run.sh
. Use caminhos absolutos nos arquivos de serviço.
Você também tem a forking
opção definida. Isso é necessário para um programa que se destaca, o seu script faz isso? A maioria não, e se o seu não, você deve remover essa opção ou o systemd estará aguardando o término do script para reivindicá-lo como iniciado.
Também os arquivos de serviço do sistema que apontam para scripts no diretório inicial são desencorajados e, possivelmente, uma preocupação de segurança. Como eles são executados como root, qualquer pessoa que possa modificá-los pode obter acesso root ao seu computador. É muito melhor copiar o script /usr/local/bin
e garantir que ele seja de propriedade e somente gravável pela raiz para interromper isso. Também é uma boa ideia executar o script como um usuário sem privilégios usando as opções User=
e Group=
no arquivo de serviço.
Se você deseja executá-lo como seu usuário, é melhor colocar o arquivo de serviço ~/.config/systemd/user/
e iniciá-lo / ativá-lo systemctl --user enable yourservice && systemctl --user start yourservice
(observe, execute como seu usuário não root). Veja isso para obter mais informações sobre arquivos de serviço do usuário.
systemctl daemon-reload
após criar seu arquivo de unidade?