supervisord拒绝以用户身份运行命令(始终以root身份运行)

时间:2017-02-14 19:03:48

标签: python django supervisord

出于某种原因,主管拒绝启动commanduser - 它始终以root身份运行 - 这对我来说是个问题,因为我正在激活virtualenv并正在运行特定于那个特定的命令。

所以,我的conf看起来像这样:

[program:site]

command = /home/some/virtual/env/dir/run/start.sh
user = some
stdout_logfile = /home/some/etc/supervisor/logs/logging.log
redirect_stderr = true
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8
stopsignal=KILL
killasgroup=true
autostart=true

start.sh看起来像这样:

#!/bin/bash
echo $USER >> /home/some/user.txt
cd
source /home/foo/some/virtual/env/bin/activate
cd /home/foo/some/virtual/env
SOCKFILE01=/home/some/etc/supervisor/site.sock
exec /home/some/virtual/env/bin/gunicorn -b unix:$SOCKFILE01  site.wsgi:application -w 2 -k gevent --worker-connections=2000 
exit 0

当我检查日志时,我看到:

start.sh: line 2: cd: /root: Permission denied

这意味着它仍然以root身份运行。

我对这完全感到困惑。我以root身份启动主管。更奇怪的部分是上面的代码在我的本地机器上工作得很好,但是在服务器上显示了上面的日志。

我已经没有想法了...... :((

编辑:

echo添加到.sh脚本,user.txt吐出:

root

..完全不解!

1 个答案:

答案 0 :(得分:0)

您需要如下设置环境变量并更新命令:

       val1  val2  val3
index                  
1      str1  abc1   1.0
2      str2  abc2   1.0
3      str3  abc3   NaN
4      str4  abc9   NaN
5      str5  abc4   1.0

这在http://supervisord.org/subprocess.html#subprocess-environment中有描述,并在尝试运行npm脚本时为我解决了这个问题。