![Системы инициализации и управление службами на различных дистрибутивах](https://rvso.com/image/38707/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B%20%D0%B8%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8%20%D0%B8%20%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%81%D0%BB%D1%83%D0%B6%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%BD%D0%B0%20%D1%80%D0%B0%D0%B7%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D1%85%20%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%B0%D1%85.png)
Есть ли какой-либо обзор того, какой дистрибутив Linux поставляется с какой (стандартной) системой инициализации и какой инструмент использует для запуска/остановки служб?
Существует ли независимый от дистрибутива способ запуска/остановки/запроса службы?
/etc/init.d/xyz start
работает только с системами инициализации system-vservice 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+, RHEL6SysV-
/etc/init.d/xyz start
RHEL5, Debian, SuseOpenRC-
/etc/init.d/xyz start
Gentoo, Alpine (поддерживает Net/FreeBSD)СМФ-
svcadm enable svc:/prefix/xyz
На базе Solaris, OpenSolaris (Illumos, Smartos и т.д.)rc -
/etc/rc.d/xyz start
BSDlaunchd-
launchctl start xyz
OSX
SysV— это стандарт Linux ( /etc/rc.d/xyz
), скрипты которого продолжают поддерживать большинство новых систем инициализации, так что это ваша отправная точка.
системдкуда движется Linux
Я не знаю утилиты, которая может работать на многих платформах, но большинство программ управления конфигурациями могут управлять кроссплатформенными службами. К сожалению, это означает, что вам также понадобится установленная программа управления конфигурациями (или, по крайней мере, базовые модули и среда выполнения Ruby/Python). Это нормально, если вы управляете установкой на своих собственных машинах, так как вы можете делать все, что устанавливаете, из инструмента конфигурации. Не очень хорошо, если вы пытаетесь распространять программное обеспечение кому-либо.
Следующие примеры управления конфигурацией будут взаимодействовать с любым локальным менеджером служб по умолчанию и запускаться, xyz
если он еще не запущен. Вам не нужно знать ничего больше.
АШеф-повар рецептможет управлятьservice
ресурс
service "xyz" do
action :start
end
service { "xyz":
ensure => "running",
}
- service: name=xyz state=started