GNU Shepherd 0.9 初始化系統發布

在最後一個重要版本形成兩年後,服務管理器GNU Shepherd 0.9(以前的dmd)發布了,它是由GNU Guix System 發行版的開發人員開發的,作為支援依賴關係的SysV-init 初始化系統的替代方案。 Shepherd 控制守護程式和實用程式是用 Guile 語言(Scheme 語言的實作之一)編寫的,它也用於定義啟動服務的設定和參數。 Shepherd 已經在 GuixSD GNU/Linux 發行版中使用,並且也旨在在 GNU/Hurd 中使用,但可以在任何支援 Guile 語言的 POSIX 相容作業系統上運行。

Shepherd 透過考慮服務之間的關係,動態識別和啟動所選服務所依賴的服務來完成啟動和停止服務的工作。 Shepherd 還支援偵測服務之間的衝突並防止它們同時運作。 此專案既可以用作主初始化系統(PID為1的init),也可以以單獨的形式管理各個使用者的後台進程(例如,運行tor、privoxy、mcron等)並且具有執行權限這些使用者。

主要創新:

  • 實作了臨時服務(transient)的概念,完成後由於進程終止或呼叫「stop」方法而自動停用,這可能是關閉後無法重新啟動的合成服務所需要的。
  • 為了創建類似 inetd 的服務,新增了「make-inetd-constructor」過程。
  • 為了創建在網路活動期間啟動的服務(以 systemd 套接字啟動方式),新增了「make-systemd-constructor」流程。
  • 新增了在背景啟動服務的過程 - “在背景啟動”。
  • 在「make-forkexec-constructor」例程中新增了參數「:supplementary-groups」、「#:create-session」和「#:resource-limits」。
  • 在等待 PID 檔案時啟用無阻塞操作。
  • 對於不帶「#:log-file」參數的服務,提供到 syslog 的輸出,對於帶有 #:log-file 參數的服務,日誌將寫入一個單獨的文件,指示記錄時間。來自非特權牧羊人程序的日誌儲存在 $XDG_DATA_DIR 目錄中。
  • 對使用 Guile 2.0 進行建置的支援已停止。使用 Guile 版本 3.0.5-3.0.7 時出現的問題已解決。
  • 現在需要 Fibers 庫 1.1.0 或更高版本才能運作。

來源: opennet.ru

添加評論