不同发行版上的初始化系统和服务管理

不同发行版上的初始化系统和服务管理

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

相关内容