不同發行版上的初始化系統與服務管理

不同發行版上的初始化系統與服務管理

是否有一些概述哪個 Linux 發行版附帶哪個(預設)init 系統並使用哪個工具來啟動/停止服務?

是否有一些獨立於發行版的方式來啟動/停止/查詢服務?

  • /etc/init.d/xyz start僅適用於 system-v init 系統
  • service xyz start並非在每個發行版上都可用(哪個發行版沒有(沒有)這個?)
  • 根據可用命令進行大小寫切換似乎是唯一可靠的方法

背景:我們需要為不同的Linux發行版撰寫一個安裝程序,這些發行版需要重新啟動/查詢服務。呼叫該service工具會很酷,但我不確定哪些發行版支援此功能。

答案1

如果您正在安裝此服務,那麼您可能需要了解每個發行版的服務管理,因為您應該為您想要支援的平台正確編寫初始化腳本/配置。

  • 系統- systemctl start xyz.service
    Fedora 15+、RHEL7、Arch、Debian 8+、Ubuntu 15+、openSUSE 12.3+

  • 暴發戶- service xyz start
    Ubuntu、Fedora 9+、RHEL6

  • 系統V- /etc/init.d/xyz start
    RHEL5、Debian、Suse

  • 開放式RC- /etc/init.d/xyz start
    Gentoo、Alpine(支援 Net/FreeBSD)

  • 單模光纖-svcadm enable svc:/prefix/xyz
    基於 Solaris、Opensolaris(illumos、smartos 等)

  • rc - /etc/rc.d/xyz start
    BSD

  • 發射-launchctl start xyz
    作業系統

系統V/etc/rc.d/xyz是大多數新 init 系統繼續支援腳本的Linux 標準 ( ),因此這是您的基點。

系統Linux 的發展方向

我不知道有哪個實用程式可以在許多平台上運行,但大多數配置管理軟體都可以進行跨平台服務管理。不幸的是,這意味著您還需要安裝配置管理軟體(或至少是底層模組和運行時 ruby​​/python)。如果您在自己的電腦上管理安裝,這很好,因為您可以透過設定工具完成所有安裝。如果您試圖將軟體分發給任何人,那就不太好了。

以下組態管理範例將與本機預設服務管理員進行交互,並xyz在其尚未執行時啟動。您不需要再了解任何事情。

A廚師 食譜可以管理一個service資源

service "xyz" do
  action :start
end

木偶service

service { "xyz":
  ensure => "running",
}

Ansibleservice模組

- service: name=xyz state=started

相關內容