关于bash:Crontab不使用.bashrc中定义的django env变量

Crontab not using the django env variables defined in .bashrc

我有django应用程序,它使用.bashrc文件中定义的env变量。 django应用正在获取.bashrc文件中定义的值。

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

但是在这种情况下,cron无法获取.bashrc文件中定义的env变量的值。我已经尝试了几乎所有找到的文档,但是仍然无法正常工作。

这是我使用的脚本:

1
2
3
4
5
6
7
8
9
WORKON_HOME=/home/ubuntu

PROJECT_ROOT=/home/ubuntu/projects/

. $WORKON_HOME/virtuals/bin/activate

cd $PROJECT_ROOT

python manage.py COMMAND

,在我使用的cron选项卡中:

1
*/2 * * * * /home/ubuntu/test.sh

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


cron作业不是交互式shell。因此,.bashrc将不会被获取。您必须在脚本或crontab本身中手动执行此操作。

应该执行以下操作:

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


找到了答案:
Cron没有运行django命令

我在cron脚本中手动定义了这些值。