Crontab启动Gunicorn安装了pip,找不到命令

时间:2019-10-24 09:09:23

标签: python cron

我想在重新启动时在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或类似工具安装的应用?

2 个答案:

答案 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