Я уже некоторое время управляю установками серверов как на Ubuntu flavor, так и вне его - я вполне приспособился к /etc/init.d/ для перезапуска серверов. Теперь я получаю это сообщение:
root@tatooine:~# /etc/init.d/mysql statusRather than invoking init scripts through /etc/init.d, use the service(8)utility, e.g. service mysql statusSince the script you are attempting to invoke has been converted to anUpstart job, you may also use the status(8) utility, e.g. status mysqlmysql start/running, process 14048
Похоже, это было вызвано в последней версии LTS Ubuntu - почему? Что такого плохого в /etc/init.d/ и в чем / есть ли разница между service и /etc/init.d/?
/etc/init.d сценарии - это старый способ ведения дел. Они взяты из стандарта System V. Однако эти скрипты запускаются только в определенной последовательности, поэтому никаких реальных зависимостей установить невозможно.
Поэтому upstart был разработан с намерением заменить все /etc/init.d скрипты со стартовыми скриптами (в /etc/init).
service позволяет плавно переходить от /etc/init.d скрипты для запуска скриптов. В будущем, когда все больше и больше скриптов будут переданы в upstart, сервис все равно будет работать, потому что он находит обе возможности.
Также проверьте справочную страницу для служебной команды: man service
service запускает скрипт в предсказуемой среде (рабочий каталог - / и заданы только 2 переменные среды: LANG и TERM). Это также добавляет возможность делать --full-restart Итак, подведем итог:
service может запускать скрипты из /etc/init или /etc/init.d (upstart или System V)
service запускает скрипты в предсказуемой среде.
Аспект "предсказуемой среды" может вызвать у вас проблемы, если ваш сценарий по какой-либо причине зависит от переменной среды. Вероятно, есть способ обойти это, но я не знаю, что это такое, и это выходит за рамки данного вопроса :)