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。因此,
应该执行以下操作:
1 | */2 * * * * source /home/ubuntu/.bashrc ; /home/ubuntu/test.sh |
找到了答案:
Cron没有运行django命令
我在cron脚本中手动定义了这些值。