it-swarm-eu.dev

Was ist der Unterschied zwischen "Service" und "/etc/init.d/"?

Ich verwalte seit einiger Zeit Serverinstallationen sowohl auf Ubuntu als auch außerhalb von Ubuntu - ich habe mich ziemlich an /etc/init.d/ gewöhnt, um die Dienste neu zu starten. Jetzt bekomme ich diese Nachricht:

[email protected]:~# /etc/init.d/mysql status
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql status

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the status(8) utility, e.g. status mysql
mysql start/running, process 14048

Dies scheint in der neuesten LTS von Ubuntu geschehen zu sein - warum? Was ist so schlimm an /etc/init.d/ und was/gibt es einen Unterschied zwischen service und /etc/init.d/?

113
Marco Ceppi

/etc/init.d Skripte sind die alte Art, Dinge zu tun. Sie stammen aus dem System V-Standard. Diese Skripte werden jedoch nur in einer bestimmten Reihenfolge ausgelöst, sodass keine echten Abhängigkeiten hergestellt werden können.

Daher wurde upstart mit der Absicht entwickelt, alle /etc/init.d -Skripten durch upstart-Skripten (in /etc/init) zu ersetzen.

service ermöglicht den reibungslosen Übergang von /etc/init.d Skripten zu Upstart-Skripten. Wenn in Zukunft immer mehr Skripte an upstart übertragen werden, funktioniert der Dienst weiterhin, da beide Möglichkeiten gefunden werden.

103
txwikinger

Überprüfen Sie auch die Manpage für den Dienstbefehl: man service

service führt ein Skript in einer vorhersehbaren Umgebung aus (Arbeitsverzeichnis ist/und nur 2 Umgebungsvariablen sind festgelegt: LANG und TERM). Es fügt auch die Fähigkeit hinzu, --full-restart zu tun. Also zusammenfassend:

  1. service kann Skripte entweder aus/etc/init oder /etc/init.d ausführen (upstart oder System V)
  2. service führt Skripte in einer vorhersehbaren Umgebung aus.

Der Aspekt "Vorhersagbare Umgebung" kann zu Problemen führen, wenn Ihr Skript aus irgendeinem Grund von einer Umgebungsvariablen abhängt. Es gibt wahrscheinlich einen Weg, das zu umgehen, aber ich weiß nicht, was es ist, und das würde den Rahmen dieser Frage sprengen :)

28
Joe Marty