O diretório /usr/sbin
(onde o comando service
do upstart mora) não está no caminho padrão do crontab, portanto você precisará adicionar uma atribuição PATH
explícita no topo do seu arquivo crontab, por exemplo:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ou use o caminho completo em seu comando
/usr/sbin/service nginx restart
Você precisará fazer isso se você mantê-lo como um comando in-line ou dividi-lo em um script de shell (embora você tenha a opção de definir o PATH
no script versus no arquivo crontab ).
FWIW, uma vez que as variantes desta pergunta são frequentemente feitas, aqui está o ambiente padrão do cron no meu sistema 16.04, obtido executando /usr/bin/printenv > /tmp/cronenv
do crontab do root:
LANGUAGE=en_CA:en
HOME=/root
LOGNAME=root
PATH=/usr/bin:/bin
LANG=en_CA.UTF-8
SHELL=/bin/sh
PWD=/root
Observe o quão mínimo é - geralmente é por isso que comandos ou scripts que rodam bem em um shell interativo falham quando executados pelo cron.