Como @steeldriver notou: o comando service
falha porque não está no caminho crontab
. Mesmo como tarefas root, crontab executam em um ambiente que é bastante restrito em termos de variáveis ambientais. Você precisa incluir o caminho completo de muitos executáveis em um comando que deve ser executado pelo cron.
Neste caso, portanto,
/usr/sbin/service $service start
teria funcionado. Como sabemos qual é o caminho exato de um executável? Do which service
e ele responderá /usr/sbin/service
.
No entanto, o comando service
está saindo e sendo substituído por seu systemd
equivalent systemctl
. Você faria systemctl start $service
em um comando de terminal. Mesmo sem sudo
, systemctl
descobrirá que ele não está sendo executado como root e solicitará sua sudo
password.
Em um crontab, você usaria o caminho completo para systemctl
utility, que é /bin/systemctl
.
Então, se você usar
/bin/systemctl start $service
deve funcionar.