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.