是否有一些概述哪个 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