2013-08-06 404 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管家不會爲你做。

如果您依賴於要設置的某些環境變量,請將其設置爲您的配置中的那些變量。