bash - Crontab 不使用 .bashrc 中定义的 django 环境变量

标签 bash ubuntu cron

我有一个使用 中定义的环境变量的 django 应用程序。 .bashrc 文件。 django 应用程序正在获取 .bashrc 文件中定义的值。

我需要在 crontab 中运行 python 管理命令。通常这很容易定义。您可以在脚本中定义管理命令并将其添加到 cron 或直接在 cron 中使用该命令。

但是在这个可以 cron 没有得到 .bashrc 文件中定义的环境变量的值。我已经尝试了几乎所有找到的文档,但仍然无法正常工作。

这是我使用的脚本:

WORKON_HOME=/home/ubuntu

PROJECT_ROOT=/home/ubuntu/projects/

. $WORKON_HOME/virtuals/bin/activate

cd $PROJECT_ROOT

python manage.py COMMAND

在我使用的 cron 选项卡中:
*/2 * * * * /home/ubuntu/test.sh

此设置在所有其他情况下都有效。现在执行 cron 时出现错误。但是脚本在手动执行时有效。

最佳答案

cron-job 不是交互式 shell。所以.bashrc不会被采购。您必须在脚本或 crontab 本身中手动执行此操作。

应该这样做:

*/2 * * * * source /home/ubuntu/.bashrc ; /home/ubuntu/test.sh

关于bash - Crontab 不使用 .bashrc 中定义的 django 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41262968/

相关文章:

bash - sed 在 bash 脚本中不起作用

git - 我们还需要使用远程命令来设置 github push ssh 访问吗?

linux - .vimrc 和 .gvimrc 的区别

ruby-on-rails - Rails 回形针处理器 : shell command failing

cron - 如何每两周创建一个 cron 表达式

linux - 在不重启 tomcat 的情况下截断 catalina.out

grails - 在特定时间执行Grails cron作业

string - Bash,连接 2 个字符串以引用第三个变量

bash - 如何从 Visual Studio 2017(基于目录的项目)中的任意构建任务运行 bash?

linux - 具有单独结果的 Bash 简单搜索脚本