我有一台服务器(Ubuntu 18.04),它应该以一定的时间间隔执行 Django 管理命令。 (每天 16:30)我以前使用 cron 设置过这样的作业,但由于某种原因,服务器无法执行我的 cronjob。
我尝试运行的行如下,它使用 python 虚拟环境的可执行文件来运行 Django 管理命令。
30 16 * * * /home/username/project/venv/bin/python3 /home/username/project/DjangoProjectName/manage.py process_data >> /home/username/crontaak.log
当我直接从终端运行命令时,一切正常(包括日志文件)。 Cron 似乎也可以工作,因为我添加了以下 cronjob 作为测试,并且它按预期工作。
* * * * * date > /home/username/crontestrun
我还确保脚本末尾有一个空行,因为我发现一些帖子表明这可能是导致问题的原因。
我使用模拟(工作)设置检查了其他项目的 crontab,没有发现任何错误/差异(除了这些作业在运行 ubuntu 16.04 的服务器上运行)。
这里有人知道我的设置有什么问题吗?
答案1
在终端中使用:
echo $PATH
当cron
运行时,它不知道允许 python 脚本在终端中工作的所有路径。
解决方案是创建一个调用 python 脚本的 bash 脚本。但在这样做之前它会执行:
PATH="new-paths:$PATH"