Sistemas de inicialização e gerenciamento de serviços em diferentes distribuições

4

Existe alguma visão geral de qual distribuição Linux vem com qual sistema init (padrão) e usa qual ferramenta para iniciar / parar serviços?

Existe alguma maneira independente de distribuição para iniciar / parar / consultar um serviço?

  • /etc/init.d/xyz start só funciona com sistemas init do system-v
  • service xyz start não está disponível em todas as distribuições (qual distribuição tem (não) isso?)
  • troca de maiúsculas, dependendo dos comandos disponíveis, parece ser a única forma confiável

Antecedentes: Precisamos escrever um instalador para uma distribuição Linux diferente que precise reiniciar / consultar serviços. Chamar a ferramenta service seria legal para isso, mas não tenho certeza de quais distribuições suportam isso.

    
por michas 24.06.2014 / 20:00

1 resposta

4

Se este serviço é o que você está instalando, então você provavelmente precisará saber o gerenciamento de serviço de cada distribuição, assim como deveria estar escrevendo seus scripts de init / config corretamente para aquelas plataformas que você quer suportar.

  • systemd - systemctl start xyz.service
    Fedora 15+, RHEL7, Arch, Debian 8+, Ubuntu 15+, openSUSE 12.3+

  • Upstart - service xyz start
    Ubuntu, Fedora 9+, RHEL6

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

  • OpenRC - /etc/init.d/xyz start
    Gentoo (suporta Net / FreeBSD)

  • SMF - svcadm enable svc:/prefix/xyz
    Solaris, baseado em Opensolaris (illumos, smartos etc)

  • rc - /etc/rc.d/xyz start
    BSDs

  • launchd - launchctl start xyz
    OSX

SysV é o padrão do Linux ( /etc/rc.d/xyz ) do qual a maioria dos novos sistemas init continuam a suportar os scripts, então esse é o seu ponto de base.

systemd é onde o Linux está se dirigindo

Não tenho conhecimento de um utilitário que possa ser executado em muitas plataformas, mas a maioria dos softwares de gerenciamento de configuração pode executar o gerenciamento de serviços entre plataformas. Infelizmente, isso significa que você também precisaria do software de gerenciamento de configuração (ou pelo menos os módulos subjacentes e o tempo de execução ruby / python). Isso é bom se você está gerenciando a instalação em suas próprias máquinas, como você poderia fazer tudo o que você instala a partir da ferramenta de configuração. Não é tão bom se você está tentando distribuir software para qualquer um.

Os exemplos de gerenciamento de configuração a seguir interagem com qualquer que seja o gerenciador de serviços padrão local e iniciam xyz se ele ainda não estiver em execução. Você não precisa estar ciente de mais nada.

Um Chef receita pode gerenciar um service resource

service "xyz" do
  action :start
end

Marionete service

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

Módulo service anível

- service: name=xyz state=started
    
por 24.06.2014 / 23:33