Systemd
使環境變數可用於在 init.d 腳本中啟動的下游程序
這個問題源於@FrustratedWithFormsDesigner評論。
如何使
export
在 init.d 腳本中設置的環境變數可用於在同一 init.d 腳本中啟動的下游程序?更詳細地說,我在一個 Amazon EC2 實例上並使用 init.d 腳本來控制我的
node
.js 伺服器,該伺服器又由nodemon
哪個監視器控製文件更改並node
根據需要重新啟動。所以簡而言之,我的 init.d 腳本開始nodemon
,然後開始node
。在 init.d 腳本中設置的環境變數export
似乎對 可用nodemon
,但對 不可用node
。如何使這些環境變數node
也可用?目前,我的 Amazon EC2 實例中只有 init.d 可用,所以這甚至可以通過 init.d 腳本實現,如果沒有,這對於 upstart 或最好是 systemd 是否可行?
我建議切換到基於 systemd 的 Linux 發行版,例如 Fedora 或 Ubuntu 16.04。
systemd
可以輕鬆地將環境變數傳遞給您的程序,並且它可以自動重新啟動失敗的程序以及在啟動時啟動它。systemd 的 journald 也可以很好地處理日誌記錄。也沒有安裝或執行其他任何東西的成本,因為 systemd 是作業系統分發的一部分。這是在一個單元文件中使用 systemd 設置兩個環境環境變數的範例:
Environment="ONE=one" 'TWO=two two'
完整的文件在這裡。
您的問題部分是複雜性之一,因為初始化系統和程序管理器都處理傳遞的環境變數。使用 systemd 作為初始化系統和程序管理器,消除了一層複雜性。