Linux
為 Supervisor debian 設置 env 變數時出現問題
我正在使用 supervisorctl 執行程序和環境變數來儲存公共變數。
為了設置環境變數,我使用 /etc/environment。我已添加以下內容作為環境變數:
Foo=Bar
然後我使用以下命令確保環境變數設置正確
echo $Foo > Bar
這是我嘗試使用 Supervisor 執行的範常式序:
echo $Foo while : do sleep 10s echo "I have completed" done
當我直接執行程序時,它的工作變數正確:
sh /home/data/trial.sh > Bar I have completed
我已經
Trial.conf
在我的/etc/supervisor/conf.d/
目錄中添加了。這是我的Trial.conf
:[program:Trial] command = sh /home/data/trial.sh
當我使用 supervisorctl 執行程序時
supervisor> start Trial Trial: started supervisor> fg Trial I have completed
我找到了一些為 supervisorctl 設置本地環境變數的解決方案
我嘗試了以下方法:
[supervisord] environment=Foo="%(ENV_Foo)s"
但是當我重新啟動主管並啟動主管時,我收到了這個錯誤:
unix:///var/run/supervisor.sock no such file
我注意到的一種行為是,當我使用 sudo 時,我無法訪問我的環境變數:
echo $Foo > Bar sudo echo $Foo >
為此,我找到了一個
sudo -E su
為 root 保留 $Foo 的解決方案。**問題:**如何讓 Supervisor 訪問我的本地環境變數?
您不應該試圖讓 supervisord 讀取您使用者的環境變數。相反,您應該告訴 supervisord 在其配置中使用什麼環境變數。
環境變數不會持續重啟,每次啟動或啟動 shell 時都需要設置它們。
請記住,使用者可能會看到其他使用者的環境變數,因此不要在其中儲存任何敏感資訊(如密碼)。使用適當保護的配置文件。