Parece que o seu problema é porque os scripts cron são executados com um valor PATH
diferente por padrão. Por exemplo, no Ubuntu como root você tem /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
em seu PATH por padrão. Mas o seu script cron executando como root tem um valor PATH mais limitado: /usr/bin:/bin
.
Eu recomendo que você defina a variável de ambiente PATH
no topo dos seus scripts cron:
PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
Neste caso em particular, o problema é que o script service
usa /sbin/initctl
(Upstart), que não está no PATH usado pelo cron. Se esse comando falhar, ele tentará usar o script tradicional /etc/init.d/${SERVICE}
. Mas nem todos os serviços incluem esse script antigo e é por isso que o seu script funciona com alguns serviços, mas não com outros.