В течение некоторого времени я управлял установками серверов как в Ubuntu, так и вне его - я вполне приспособился к /etc/init.d/
перезапуску сервисов. Теперь я получаю это сообщение:
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
Кажется, это произошло в последней версии LTS Ubuntu - почему? Что такого плохого /etc/init.d/
и в чем / есть разница между service
и /etc/init.d/
?
Ответы:
/etc/init.d
Сценарии - это старый способ ведения дел. Они взяты из стандарта System V. Однако эти сценарии запускаются только в определенной последовательности, поэтому никакие реальные зависимости не могут быть установлены.Поэтому выскочка была разработана с намерением заменить все
/etc/init.d
скрипты выскочившими скриптами (в/etc/init
).service
позволяет плавно переходить от/etc/init.d
сценариев к сценариям upstart. В будущем, когда все больше и больше сценариев переносятся в upstart, сервис все равно будет работать, поскольку он находит обе возможности.источник
Также проверьте справочную страницу для сервисной команды:
man service
service
запускает сценарий в предсказуемой среде (рабочий каталог - / и установлены только 2 переменные среды: LANG и TERM). Это также добавляет возможность делать--full-restart
. Итак, подведем итог:service
может запускать скрипты из / etc / init или /etc/init.d (upstart или System V)service
запускает скрипты в предсказуемой среде.Аспект «предсказуемой среды» может вызвать проблемы, если ваш сценарий по какой-то причине зависит от переменной среды. Возможно, есть способ обойти это, но я не знаю, что это такое, и это выходит за рамки этого вопроса :)
источник