出于某种原因,主管拒绝启动command
为user
- 它始终以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
..完全不解!
答案 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脚本时为我解决了这个问题。