python - crontab 中的 manage.py 命令不起作用

标签 python django ubuntu bitnami

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

定时任务

#!/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 日志也显示

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"

最佳答案

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

回显 $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:我还不能发表评论,因此我把它放在了答案中。

关于python - crontab 中的 manage.py 命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44277422/

相关文章:

linux - vmware Player 无法在 kubuntu 中启动服务

python - 为什么在 Python 3.8 中是 sqrt(x*x + y*y) != math.hypot(x, y)?

python - 在同一行打印新输出

python - 我需要一些帮助来修复一个 python 脚本,该脚本为 chatgpt 提供人形语音,并允许我使用自己的声音与它交谈

python - django 从查询集中返回外键对象?

python - 当一个属性是模型方法时 Django QuerySet 的升序/降序排序

ruby-on-rails - TZInfo::InvalidTimezoneIdentifier with rails 3.1.0 和 ubuntu

python - 如何根据两组列之间的值组合创建列?

python - 如何在 Django Python 中使用检测意图(文本)?

python - Vaultier 无法用于 docker/ubuntu/debian (Python)