crontab中的manage.py命令无法正常工作

时间:2017-05-31 06:39:53

标签: python django ubuntu bitnami

我创建了一个可执行的脚本.sh,其中包含运行django managemenet命令的代码。

cron.sh

#!/bin/sh
. /path/to/env/activate
cd /path/to/project
/path/to/env/bin/python manage.py some_command

我可以确认这个脚本,manage.py命令正在直接在终端上执行

$ /path/to/cron.sh

当我通过crontab执行此操作时,它无法正常工作。

**我做错了什么?我可以确认crontab没有任何问题,它执行cron.sh文件但是 path / to / env / bin / python manage.py some_command 没有按预期工作。

cron log也显示

CRON[14768]: (root) CMD /path/to/cron.sh > /dev/null 2>&1

我正在使用bitnami django ami(ubuntu 14.04.5 LTS)

更新

删除/ dev / null后,我现在收到此错误

"Cannot locate wrapped file"

2 个答案:

答案 0 :(得分:1)

似乎这是一个PATH问题。我不知道django是否使用必须设置的特定路径,但是由于安全原因,AFAIK crontab PATH确实受到限制。只是为了检查你是否可以在shell终端中执行以下操作:

echo $PATH

例如,您将获得完整的PATH:

/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl

在你的crontab中,把它放在你的代码上面:

PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl

告诉我这是否有效。如果是,请尝试清除提供的PATH,或者甚至更好地在代码中提供绝对位置。

我不得不说我不知道​​你是否可以像这样在cron中执行cd。我总是使用绝对路径或cd /some/dir && /path/to/script args

P.S:我还不能发表评论,因此我把它放在答案中。

答案 1 :(得分:0)

问题是您没有使用Bitnami用来加载所有环境变量的脚本(/opt/bitnami/scritps/setenv.sh)。

我会尝试使用这个脚本:

#!/bin/sh
. /opt/bitnami/scritps/setenv.sh
. /path/to/env/activate
cd /path/to/project
/path/to/env/bin/python manage.py some_command