我正在执行supervisord执行gunicorn。 我的问题是当我的脚本包含CURR_DIR =`pwd -P`并通过supervisord运行脚本时,它停止了这个过程。 我的脚本位于/var/www/conf ,我希望`pwd P`在运行脚本时返回/var/www/conf 。 我试过PWD,而且不会返回/var/www/conf 。 当我在supervisord之外运行脚本时,`pwd -P`工作。
但是,如果我硬编码CURR_DIR = /一些/目录,然后supervisord运行脚本没有问题。
这是我的脚本
#!/bin/bash NAME=myproj GUNICORN_EXEC=/home/user/.virtualenvs/tscoop/bin/gunicorn CURRENT_DIR=`pwd -P` # does not work: causes "STOPPED" error in supervisord CURRENT_DIR=/var/www/conf # works ok export GUNICORN_CONF=${CURRENT_DIR}/gunicorn.conf echo "Starting $NAME" exec $GUNICORN_EXEC -c $GUNICORN_CONF exit 0
这里是我从supervisorctl shell得到的错误信息:
supervisor> status myscript STOPPED Aug 27 09:57 PM
我怎样才能让我可以运行supervisord可以运行上面的脚本?
你不能做你想要的,因为pwd返回的值不能保证你所期望的。
脚本的位置不是它的工作目录
$cat test #!/bin/bash pwd $ ./test /home/iain $ cd /tmp $/home/iain/test /tmp
看? pwd正在返回我用来调用test命令的shell的当前目录。 这就是发生在你身上的事情,你正在看到从supervisordinheritance的价值。
如果您阅读丹尼斯链接到的文档,可以提供有关如何解决问题的有用信息。