我想在重新启动时在gunicorn中启动django应用程序。
以下所有命令均以用户simernes身份运行
我已经在pip3中安装了gunicorn:
pip3 install gunicorn
crontab:
crontab -e
@reboot /home/simernes/run_gunicorn.sh > /home/simernes/logfile 2>&1 &
run_gunicorn.sh
#!/bin/bash
source /home/simernes/.bashrc
cd /home/simernes/djangoapp
gunicorn --bind localhost:8000 config.wsgi
但是,当我重新启动并检查日志文件时,它显示: 第4行:gunicorn:找不到命令
从登录终端的ssh单独运行脚本可以正常工作。
我是否需要为cron采购python环境,才能看到通过pip或类似工具安装的应用?
答案 0 :(得分:0)
也许在脚本中提供gunicorn
的完整路径
答案 1 :(得分:0)
cron
在具有最少环境变量和路径的shell中运行脚本,通常如下:
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=username>
X-Cron-Env: <USER=username>
X-Cron-Env: <HOME=/Users/username>
这意味着gunicorn
或/usr/bin:/bin
中没有的其他内容将无法用于您的脚本。
您可以做的是通过向gunicorn
添加类似的内容将路径crontab
导出为环境变量:
@reboot export GUNICORN=/path/to/gunicorn && /home/simernes/run_gunicorn.sh > /home/simernes/logfile 2>&1 &
然后在脚本中执行gunicorn
:
#!/bin/bash
source /home/simernes/.bashrc
cd /home/simernes/djangoapp
$GUNICORN --bind localhost:8000 config.wsgi