Python crontab中的manage.py命令不工作

Python crontab中的manage.py命令不工作,python,django,ubuntu,bitnami,Python,Django,Ubuntu,Bitnami,我创建了一个可执行的script.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做同样的事情时,它并没有像预期的那样工作 **

我创建了一个可执行的script.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_命令没有按预期工作

cron日志也显示

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"

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

echo$PATH

您将获得完整的路径,例如:

/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site\u perl:/usr/bin/vendor\u perl:/usr/bin/core\u perl

在crontab中,将其置于代码上方:

PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site\u perl:/usr/bin/vendor\u perl:/usr/bin/core\u perl

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

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


注:由于这个原因,我还不能发表评论。

问题是您没有使用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

只是让您知道-您可以使用
/path/to/env/python
在该虚拟环境中运行您的程序,而无需激活它。是的,我已经尝试过了。您可能需要从cron脚本中设置
DJANGO\u SETTINGS\u模块
env变量,或者通过
--settings
。删除重定向到
/dev/null
以查看manage.py命令输出的错误。请注意,当我直接从终端(如$/path/to/cron.sh)执行它时,它工作得非常好。这是我调试过的,因为当我遇到第一次尝试登录的此类问题时,crontab很难调试通过
/path/to/cron.sh>/tmp/log.out 2>&1执行的文件。如果这没有向您透露一些信息,我有时会在python代码中使用一些日志语句来记录一些数据(您只需将其写入文件或使用模块即可)。通过这种方式,您可以尝试找出是什么导致了这种意外的工作方式(甚至知道它是否以某种方式运行)。感谢您的帮助,这就是我得到的无法定位包装文件的原因。您好@RizwanMumtaz,我不是Django专家,但这似乎是堆栈环境问题。检查这一点可能有用。更具体地说。