![Init-Systeme und Servicemanagement auf verschiedenen Distributionen](https://rvso.com/image/38707/Init-Systeme%20und%20Servicemanagement%20auf%20verschiedenen%20Distributionen.png)
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 start
funktioniert nur mit System-V-Init-Systemenservice xyz start
ist 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. service
Dafü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+, RHEL6SysV-
/etc/init.d/xyz start
RHEL5, Debian, SuseOpenRC-
/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
BSDsgestartet-
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, xyz
wenn er nicht bereits ausgeführt wird. Mehr müssen Sie nicht wissen.
AKoch Rezeptkann verwalten eineservice
Ressource
service "xyz" do
action :start
end
service { "xyz":
ensure => "running",
}
- service: name=xyz state=started