Я хотел бы добавить еще один подход. Как и другие люди, Ubuntu (16.04 здесь) и www-data crontab кажется ненадежным (может быть, это вопрос безопасности?).
В любом случае, в нашей компании нам нравится иметь все cronjob на сервере легко доступный, поэтому вы ничего не пропустите. В то же время мы не хотим запускать все (что-то действительно!) Как root.
Поэтому мы запускаем
sudo crontab -e
Как вы обычно это делаете, а затем мы указываем command как
* * * * * /bin/su - www-data -s /bin/bash -c '/path/to/command'
Это будет выполняться / path / to / command как www-data, сохраняя cronjob в корневом файле cronjobs (и это всегда будет работать правильно). Это имеет приятное преимущество в том, что вы можете писать лог-файлы как root (для максимальной безопасности) с помощью труб.
Обратите внимание, что мы передаем нашу предпочтительную оболочку, это также может быть / bin / sh для более простой оболочки (нам просто нравятся полные возможности bash). Www-data не имеет оболочки, поэтому вы получите ошибки без нее. Обычно cron запускает задания только с / bin / sh.