Eu gostaria de adicionar outra abordagem. Como outras pessoas mencionaram, Ubuntu (16.04 aqui) e www-data crontab parece não ser confiável (talvez seja uma coisa de segurança?).
De qualquer forma, em nossa empresa, gostamos de ter todos os cronjobs em um servidor facilmente acessíveis, para que você não perca nada. Ao mesmo tempo, não queremos executar tudo (qualquer coisa realmente!) Como root.
Portanto, corremos
sudo crontab -e
Como você faz normalmente, e então especificamos o comando como
* * * * * /bin/su - www-data -s /bin/bash -c '/path/to/command'
Isso executará / path / to / command como www-data enquanto mantém o cronjob no arquivo cronjobs da raiz (e isso sempre será executado corretamente). Tem o benefício de poder gravar os arquivos de log como root (para máxima segurança) usando pipes.
Note que estamos passando o nosso shell preferido, isso também poderia ser / bin / sh para um shell mais simples (nós apenas gostamos de capacidades completas do bash). O www-data não tem um shell especificado, portanto, você obterá erros sem ele. Normalmente, o cron executa trabalhos apenas com / bin / sh.