Системы инициализации и управление службами на различных дистрибутивах

Системы инициализации и управление службами на различных дистрибутивах

Есть ли какой-либо обзор того, какой дистрибутив Linux поставляется с какой (стандартной) системой инициализации и какой инструмент использует для запуска/остановки служб?

Существует ли независимый от дистрибутива способ запуска/остановки/запроса службы?

  • /etc/init.d/xyz startработает только с системами инициализации system-v
  • 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

  • SysV- /etc/init.d/xyz start
    RHEL5, Debian, Suse

  • OpenRC- /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

  • launchd- launchctl start xyz
    OSX

SysV— это стандарт Linux ( /etc/rc.d/xyz), скрипты которого продолжают поддерживать большинство новых систем инициализации, так что это ваша отправная точка.

системдкуда движется Linux

Я не знаю утилиты, которая может работать на многих платформах, но большинство программ управления конфигурациями могут управлять кроссплатформенными службами. К сожалению, это означает, что вам также понадобится установленная программа управления конфигурациями (или, по крайней мере, базовые модули и среда выполнения Ruby/Python). Это нормально, если вы управляете установкой на своих собственных машинах, так как вы можете делать все, что устанавливаете, из инструмента конфигурации. Не очень хорошо, если вы пытаетесь распространять программное обеспечение кому-либо.

Следующие примеры управления конфигурацией будут взаимодействовать с любым локальным менеджером служб по умолчанию и запускаться, xyzесли он еще не запущен. Вам не нужно знать ничего больше.

АШеф-повар рецептможет управлятьserviceресурс

service "xyz" do
  action :start
end

Кукольныйservice

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

serviceМодуль Ansible

- service: name=xyz state=started

Связанный контент