是否有一些概述哪個 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
在其尚未執行時啟動。您不需要再了解任何事情。
service "xyz" do
action :start
end
service { "xyz":
ensure => "running",
}
- service: name=xyz state=started