Вопрос В чем разница между «Сервис» и «/etc/init.d/»?


Я занимаюсь установкой сервера как на вкус, так и на вкус 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/?


110
2017-08-12 19:12


происхождения


Повседневная книга Upstart содержит хорошее объяснение рациональности переключения. - ændrük


ответы:


/etc/init.d скрипты - это старый способ делать вещи. Они исходят из стандарта System V. Тем не менее, эти сценарии запускаются только в определенной последовательности, поэтому никакие реальные зависимости не могут быть установлены.

Поэтому выскочка была разработана с намерением заменить все /etc/init.d скрипты с выскочками скриптов (в /etc/init).

service позволяет плавный переход от /etc/init.d скрипты для выскочки скриптов. В будущем, когда все больше и больше скриптов будут перенесены на выскочку, обслуживание будет по-прежнему работать, потому что оно находит обе возможности.


97
2017-08-12 19:33



Upstart будет постепенно отменен, не так ли? - wrongusername
systemd заменит выскочку после того, как будут созданы планы - 14.04 LTS будет использовать выскочку. Об этом было объявлено Марк Шаттлворт, в заголовке под заголовком Похудеть - not a patch


Также проверьте справочную страницу для служебной команды: man service

service запускает скрипт в предсказуемой среде (рабочий каталог есть / и задано только 2 переменных среды: LANG и TERM). Это также добавляет способность делать --full-restart, Итак, подведем итог:

  1. service может запускать скрипты из / etc / init или /etc/init.d (upstart или System V)
  2. service запускает скрипты в предсказуемой среде.

Аспект «предсказуемой среды» может вызвать проблемы, если по какой-либо причине ваш сценарий зависит от переменной среды. Вероятно, есть способ обойти это, но я не знаю, что это такое, и это выходит за рамки этого вопроса :)


26
2018-06-08 15:52



Привет @Joe Marty, Это именно то, что я сейчас экспериментирую. У меня есть служба, которая передает переменную окружения «DISPLAY», которая отсутствует при запуске демона с «началом службы myservice», но присутствует при запуске с «/etc/init.d/myservice start». Любая идея о том, как получить эту переменную? - frandevel