Od jakiegoś czasu zarządzam instalacjami serwerów zarówno w trybie Ubuntu, jak i poza nim - jestem dość przystosowany do /etc/init.d/
restartowania usług. Teraz dostaję tę wiadomość:
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
Wydaje się, że stało się tak w najnowszym LTS Ubuntu - dlaczego? Co jest tak złego /etc/init.d/
i jaka / jest różnica między service
i /etc/init.d/
?
Odpowiedzi:
/etc/init.d
skrypty to stary sposób robienia rzeczy. Pochodzą ze standardu System V. Jednak te skrypty są uruchamiane tylko w określonej sekwencji, więc nie można ustalić rzeczywistych zależności.Dlatego upstart został opracowany z zamiarem zastąpienia wszystkich
/etc/init.d
skryptów skryptami upstart (in/etc/init
).service
umożliwia płynne przejście ze/etc/init.d
skryptów do skryptów upstart. W przyszłości, gdy coraz więcej skryptów zostanie przeniesionych na upstart, usługa będzie nadal działać, ponieważ znajdzie obie możliwości.źródło
Sprawdź także stronę manuala komendy service:
man service
service
uruchamia skrypt w przewidywalnym środowisku (katalog roboczy to / i ustawiono tylko 2 zmienne środowiskowe: LANG i TERM). Dodaje także możliwość robienia--full-restart
. Więc by podsumować:service
może uruchamiać skrypty z / etc / init lub /etc/init.d (upstart lub System V)service
uruchamia skrypty w przewidywalnym środowisku.Aspekt „przewidywalnego środowiska” może powodować problemy, jeśli z jakiegoś powodu skrypt zależy od zmiennej środowiskowej. Jest prawdopodobnie sposób na obejście tego, ale nie wiem, co to jest, a to wykracza poza zakres tego pytania :)
źródło