Как системные сервисы запускаются в 12.10?

12

В Ubuntu меня всегда смущало то, как запускаются системные службы. Я знаю, что Ubuntu использует Upstart и поддерживает SysV, но какой из них используется для запуска служб? Это важно, когда вы хотите запустить сервис вручную.

Например, в моей системе у меня есть файлы для следующих служб в /etc/init.d/<service>(SysV) и /etc/init/<service>.conf(Upstart):

acpid, mysql, networking, qemu-kvm, ufw, libvirt-bin

Итак, если я хочу отключить выполнение MySQL при запуске, я должен использовать способ Upstart или SysV, чтобы отключить его? Кроме того, как я могу сказать, какой из них действительно используется для запуска универсального сервиса?

редактировать

Реальное сомнение здесь не в том, как отключить / включить сервисы с помощью SysV / Upstart. Что меня действительно смущает, так это то, что некоторые службы, кажется, определены (и включены) в SysV и Upstart одновременно. Есть ли какой-то приоритет между ними (например, если mysqlвключен в обоих запустите его с помощью SysV)? Или может быть так, что один инструмент использует другой в фоновом режиме?

Salem
источник
1
Посмотрите на принятый ответ здесь: askubuntu.com/questions/133807/… имеет несколько интересных ссылок.
Rinzwind

Ответы:

2

Что касается сервисов, которые определены как в SysV, так и в upstart, обычно, если вы перезапустите его через SysV, вы увидите что-то вроде этого:

al@al-mythtv:~$ sudo /etc/init.d/mysql restart
[sudo] password for al: 
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop mysql ; start mysql. The restart(8) utility is also available.
mysql stop/waiting
mysql start/running, process 29846

Это означает, что для этих сервисов предпочтительнее Upstart, а реализация SysV - просто оболочка.

Кроме того, я думаю, что у вас есть смысл каталогов в обратном направлении. / etc / init - это конфигурация upstart, /etc/init.d - это совместимость с SysV, но это всего лишь символические ссылки на upstart для этих типов сервисов.

Алистер Бакстон
источник
6

Это во многом зависит от приложения и специалиста по упаковке.

Настоятельно предпочтительны сценарии Upstart, потому что они обрабатывают события (что, как правило, замечательно), но у многих приложений недостаточно хороших сценариев Upstart, или сопровождающий приложения решил придерживаться значений по умолчанию (приложения или Debian). ,

В любом случае, вы находитесь в положении, когда вам нужно адаптироваться.

  • Для Upstart:
    • Переименуйте файл так, чтобы он не заканчивался .conf, или
    • Добавьте manualв файл. Это позволит вам вручную загрузить сервис.
  • Для старых услуг:

    update-rc.d -f <service> remove
    

Если у вас есть /etc/init.d/сценарий для чего - то и в /etc/init/сценарии , и вы хотите , чтобы проверить , если версия init.d еще жив, вы можете проверить с:

ls -l /etc/rc?.d/*<service>

Если вы видите множество символических ссылок, они устанавливаются в старом SysV init.

Оли
источник
Так что, если у меня есть служба, которая включена в SysV и Upstart (например, acpid), я могу предположить, что она запускается SysV? Или, если я хочу отключить его, мне нужно сделать это, используя update-rc.dтрюк с переименованием?
Салем