2013-08-06 393 views
0

有没有办法让主管真的在用户上下文中启动?Supervisord环境变量

正在运行的进程的环境变量似乎连接到根,即使我设置用户。我继续设置一些环境变量,但我实际上希望该过程像预先运行su - username一样运行。

这是the ipynb-cookbook的一部分,它试图在自动化环境中设置和配置IPython Notebook(完成配置文件构建)。

这是厨师的设置我用:

# Setup an IPython notebook service 
supervisor_service node[:ipynb][:service_name] do 
    user node[:ipynb][:linux_user] 
    directory node[:ipynb][:home_dir] 

    # IPython notebook should have access to the shell 
    environment "HOME" => node[:ipynb][:home_dir], 
       "SHELL" => "/bin/bash", 
       "USER" => node[:ipynb][:linux_user], 
       "PATH" => "#{node[:ipynb][:virtenv]}/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games", 
       "VIRTUAL_ENV" => "#{node[:ipynb][:virtenv]}" 

    # Make the path for the service be the virtualenvironment 
    #environment "PATH" => (File.join(node[:ipynb][:virtenv], "bin") + ":$PATH") 
    action :enable 
    autostart true 
    autorestart true 

    # Start up the IPython notebook as a service 
    command "#{node[:ipynb][:virtenv]}/bin/ipython notebook --profile=#{node[:ipynb][:profile_name]}" 
    stopsignal "QUIT" 
end 

导致该/etc/supervisor.d/ipynb.conf

[program:ipynb] 
command=/home/ipynb/ipyvirt/bin/ipython notebook --profile=cooked 
process_name=%(program_name)s 
numprocs=1 
numprocs_start=0 
autostart=true 
autorestart=true 
startsecs=1 
startretries=3 
exitcodes=0,2 
stopsignal=QUIT 
stopwaitsecs=10 
user=ipynb 
redirect_stderr=false 
stdout_logfile=AUTO 
stdout_logfile_maxbytes=50MB 
stdout_logfile_backups=10 
stdout_capture_maxbytes=0 
stdout_events_enabled=false 
stderr_logfile=AUTO 
stderr_logfile_maxbytes=50MB 
stderr_logfile_backups=10 
stderr_capture_maxbytes=0 
stderr_events_enabled=false 
environment=HOME="/home/ipynb",SHELL="/bin/bash",USER="ipynb",PATH="/home/ipynb/ipyvirt/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games",VIRTUAL_ENV="/home/ipynb/ipyvirt" 
directory=/home/ipynb 
serverurl=AUTO 

当检查环境变量,这是我看到:

{'CLICOLOR': '1', 
'GIT_PAGER': 'cat', 
'HOME': '/home/ipynb', 
'LANG': 'en_US.UTF-8', 
'LANGUAGE': 'en_US:', 
'LC_ALL': 'C', 
'LOGNAME': 'root', 
'MAIL': '/var/mail/root', 
'PAGER': 'cat', 
'PATH': '/home/ipynb/ipyvirt/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games', 
'PWD': '/', 
'SHELL': '/bin/bash', 
'SHLVL': '1', 
'SUDO_COMMAND': '/bin/bash -l', 
'SUDO_GID': '900', 
'SUDO_UID': '900', 
'SUDO_USER': 'vagrant', 
'SUPERVISOR_ENABLED': '1', 
'SUPERVISOR_GROUP_NAME': 'ipynb', 
'SUPERVISOR_PROCESS_NAME': 'ipynb', 
'SUPERVISOR_SERVER_URL': 'unix:///var/run/supervisor.sock', 
'TERM': 'xterm-color', 
'USER': 'ipynb', 
'USERNAME': 'root', 
'VIRTUAL_ENV': '/home/ipynb/ipyvirt', 
'_': '/usr/bin/chef-solo'} 

回答

1

给定用户的环境变量由shell配置文件设置,这是S管家不会为你做。

如果您依赖于要设置的某些环境变量,请将其设置为您的配置中的那些变量。