Init-Systeme und Servicemanagement auf verschiedenen Distributionen

Init-Systeme und Servicemanagement auf verschiedenen Distributionen

Gibt es eine Übersicht, welche Linux-Distribution mit welchem ​​(Standard-)Init-System ausgeliefert wird und welches Tool zum Starten/Stoppen von Diensten verwendet?

Gibt es eine verteilungsunabhängige Möglichkeit, einen Dienst zu starten/stoppen/abzufragen?

  • /etc/init.d/xyz startfunktioniert nur mit System-V-Init-Systemen
  • service xyz startist nicht auf jeder Distribution verfügbar (welche Distribution hat das (nicht)?)
  • Die Fallumschaltung in Abhängigkeit von verfügbaren Befehlen scheint der einzige zuverlässige Weg zu sein

Hintergrund: Wir müssen ein Installationsprogramm für verschiedene Linux-Distributionen schreiben, die Dienste neu starten/abfragen müssen. serviceDafür wäre es cool, das Tool aufzurufen, aber ich bin nicht sicher, welche Distributionen das unterstützen.

Antwort1

Wenn Sie diesen Dienst installieren, müssen Sie wahrscheinlich ohnehin mit der Dienstverwaltung der einzelnen Distributionen vertraut sein, da Sie Ihre Init-Skripte/Konfigurationen für die Plattformen, die Sie unterstützen möchten, korrekt schreiben sollten.

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

  • EmporkömmlingUbuntu service xyz start
    , Fedora 9+, RHEL6

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

  • OpenRC- /etc/init.d/xyz start
    Gentoo, Alpine (unterstützt Net/FreeBSD)

  • SMF- svcadm enable svc:/prefix/xyz
    Basierend auf Solaris, Opensolaris (Illumos, Smartos usw.)

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

  • gestartet- launchctl start xyz
    OSX

SysVist der Linux-Standard ( /etc/rc.d/xyz), dessen Skripte die meisten neuen Init-Systeme weiterhin unterstützen, das ist also Ihr Ausgangspunkt.

systemdist die Richtung, in die sich Linux bewegt

Mir ist kein Dienstprogramm bekannt, das auf vielen Plattformen ausgeführt werden kann, aber die meisten Konfigurationsverwaltungsprogramme können plattformübergreifende Dienste verwalten. Leider bedeutet das, dass Sie auch die Konfigurationsverwaltungssoftware installieren müssen (oder zumindest die zugrunde liegenden Module und die Laufzeitumgebung Ruby/Python). Das ist in Ordnung, wenn Sie die Installation auf Ihren eigenen Maschinen verwalten, da Sie alles, was Sie installieren, über das Konfigurationstool erledigen können. Nicht so gut, wenn Sie versuchen, Software an irgendjemanden zu verteilen.

Die folgenden Beispiele zur Konfigurationsverwaltung interagieren mit dem lokalen Standarddienstmanager und starten ihn, xyzwenn er nicht bereits ausgeführt wird. Mehr müssen Sie nicht wissen.

AKoch Rezeptkann verwalten eineserviceRessource

service "xyz" do
  action :start
end

Marionetteservice

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

Ansible- serviceModul

- service: name=xyz state=started

verwandte Informationen