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

110

Ich habe seit einiger Zeit Server-Installationen sowohl auf als auch außerhalb von Ubuntu-Flavour verwaltet - ich bin ziemlich auf /etc/init.d/ für den Neustart von Diensten eingestellt. Jetzt bekomme ich diese Nachricht:

root@tatooine:~# /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/ ?

    
Marco Ceppi 12.08.2010, 21:12
quelle

2 Antworten

97

/etc/init.d scripts sind die alte Art, Dinge zu tun. Sie stammen aus dem System V-Standard. Diese Skripts 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 -Skripte durch Upstart-Skripte zu ersetzen (in /etc/init ).

service ermöglicht den problemlosen Übergang von /etc/init.d -Skripten zu neu startenden Skripts. Wenn in Zukunft mehr und mehr Skripte zu Upstart übertragen werden, wird der Dienst weiterhin funktionieren, da er beide Möglichkeiten findet.

txwikinger 12.08.2010, 21:33
quelle
26

Überprüfen Sie auch die Manpage für den Service-Befehl: man service

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

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

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

    
Joe Marty 08.06.2011 17:52
quelle

Tags und Links