mic*_*has 4 distros linux services
是否有一些 Linux 发行版附带哪个(默认)init 系统并使用哪个工具来启动/停止服务的概述?
是否有一些独立于发行版的方式来启动/停止/查询服务?
/etc/init.d/xyz start
仅适用于 system-v init 系统service xyz start
并非在每个发行版上都可用(哪个发行版(没有)有这个?)背景:我们需要为需要重新启动/查询服务的不同 Linux 发行版编写安装程序。service
为此调用该工具会很酷,但我不确定哪些发行版支持这一点。
如果您正在安装此服务,那么您可能需要了解每个发行版服务管理,因为您应该为要支持的平台正确编写 init 脚本/配置。
systemd - systemctl start xyz.service
Fedora 15+、RHEL7、Arch、Debian 8+、Ubuntu 15+、openSUSE 12.3+
新贵- service xyz start
Ubuntu、Fedora 9+、RHEL6
SysV - /etc/init.d/xyz start
RHEL5、Debian、Suse
OpenRC - /etc/init.d/xyz start
Gentoo(支持 Net/FreeBSD)
SMF -svcadm enable svc:/prefix/xyz
基于 Solaris、Opensolaris(illumos、smartos 等)
rc - /etc/rc.d/xyz start
BSD
启动- launchctl start xyz
OSX
SysV是 Linux 标准 ( /etc/rc.d/xyz
),大多数新的 init 系统继续支持其中的脚本,因此这是您的基点。
systemd是 Linux 的发展方向
我不知道可以在很多平台上运行的实用程序,但大多数配置管理软件可以进行跨平台服务管理。不幸的是,这意味着您还需要安装配置管理软件(或至少是底层模块和运行时 ruby/python)。如果您在自己的机器上管理安装,这很好,因为您可以通过配置工具完成所有安装。如果您试图将软件分发给任何人,那就不好了。
以下配置管理示例将与本地默认服务管理器进行交互,并xyz
在它尚未运行时启动。你不需要知道更多。
service "xyz" do
action :start
end
Run Code Online (Sandbox Code Playgroud)
service { "xyz":
ensure => "running",
}
Run Code Online (Sandbox Code Playgroud)
- service: name=xyz state=started
Run Code Online (Sandbox Code Playgroud)