Ich verwalte seit einiger Zeit Serverinstallationen sowohl auf Ubuntu als auch außerhalb von Ubuntu /etc/init.d/
. 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/
?
Antworten:
/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
Skripte durch upstart-Skripte (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.quelle
Ü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 zu tun--full-restart
. Also zusammenfassend:service
kann Skripte von / etc / init oder /etc/init.d ausführen (upstart oder System V)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 :)
quelle