Яка різниця між "Службою" та "/etc/init.d/"?


113

Я деякий час керував установками сервера і відключенням смаку 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/?


3
Навчальна книга Upstart містить гарне пояснення раціональності перемикання.
ændrük

Відповіді:


103

/etc/init.dсценарії - це старий спосіб робити речі. Вони походять із стандарту System V. Однак ці сценарії запускаються лише в певній послідовності, тому реальні залежності не можуть бути встановлені.

Таким чином, розгортання було розроблено з наміром замінити всі /etc/init.dсценарії на початкові сценарії (в /etc/init).

serviceдозволяє плавний перехід від /etc/init.dскриптів до початкових сценаріїв. Надалі, коли все більше та більше скриптів буде передано на початку, сервіс все одно буде працювати, оскільки він знаходить обидві можливості.


6
Зараз випуск буде припинено, чи не так?
неправильнекористування

6
systemd замінить програму для запуску після встановлення планів - 14,04 LTS використовуватиме старт. Про це повідомив Марк Шуттлворт , у публікації під назвою Втратити милостиво
не патч

28

Також перевірте головну сторінку для команди служби: man service

serviceзапускає скрипт у передбачуваному середовищі (робочий каталог - це / і встановлено лише 2 змінні середовища: LANG та TERM). Це також додає можливість робити --full-restart. Отже, підводячи підсумок:

  1. service може запускати скрипти з / etc / init або /etc/init.d (upstart або System V)
  2. service запускає сценарії в передбачуваному середовищі.

Аспект "передбачуваного середовища" може спричинити проблеми, якщо ваш скрипт чомусь залежить від змінної середовища. Можливо, є спосіб подолати це, але я не знаю, що це таке, і це виходить за рамки цього питання :)


2
Привіт @Joe Marty, Це саме проблема, яку я зараз експериментую. У мене є сервіс, який ретранслює змінну середовища "DISPLAY", яка відсутня при запуску демон з "запуском служби myservice", але присутня при запуску з "/etc/init.d/myservice start". Будь-яка ідея, як мати цю змінну доступною?
frandevel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.