Ubuntu12.04: как отключить процесс демона при запуске

23

Обычно я использую service start/stopили initctl start/stopдля запуска или остановки процесса демона, но теперь я ищу, чтобы отключить запуск процесса демона при запуске mysqld.

В настоящее время , что я делаю это переименование /etc/init/mysql.confдо , /etc/init/mysql.conf.bakно после прочтения немного о том, systemdя узнал , что она предоставляет enable & disableвозможность для указанной выше задачи.

Итак, есть ли что-то похожее в Ubuntu 12.04 с upstart.

RanRag
источник
Вы говорите, что используете systemd? Я использую его на своем компьютере Fedora 17. systemctl [enable|disable|is-enabled] mysqld.service
BenjiWiebe
1
@BenjiWiebe: Нет, я не использую systemd. Я использую upstart, потому что systemd не используется по умолчанию в Ubuntu 12.04 / 12.10.
RanRag
1
о, теперь я вижу ... Не уверен, что я думал.
BenjiWiebe

Ответы:

26

Вы можете отключить службы, выполнив следующую команду:

sudo update-rc.d -f <service name> disable

Выдержка из справочной страницы :

При запуске с параметрами disable [S | 2 | 3 | 4 | 5] update-rc.d изменяет существующие ссылки уровня запуска для сценария /etc/init.d/name, переименовывая стартовые ссылки, чтобы остановить ссылки с порядковым номером, равным с разницей в 100 минус исходный порядковый номер.

Марк Коэн
источник
2
У меня недостаточно репутации, чтобы проголосовать против, и делать это без объяснения причин было бы в любом случае невежливо, поэтому просто комментарий: Вопрос @Noob относится к Ubuntu 12.04, в которой используется Upstart (/etc/init/*.conf configuration файлы) для большинства системных демонов (как упомянуто @Noob), в то время как ваше предложение работает только для демонов, которые начали использовать скрипты в /etc/init.d/* (старый стиль SysV). Изменить: для записи, Warl0ck имеет правильный ответ (спасибо!).
xolox
3
Речь идет о гипотетической или общей ситуации, использующей mysql в качестве конкретного тематического случая. Похоже, OP хотя бы частично знал об этом ответе, но он может послужить потомкам, если заметить, что некоторые полезные пакеты не поддерживают формат upstart и не будут его поддерживать (например, webmin и многие другие, собранные из пакетов с исходным кодом во время комментариев). , Это означает, что этот метод может быть действительным частичным ответом для контекста, во многом как ответы warl0ck и Марка для решения конкретной проблемы гипотетической службы mysql, установленной с менеджером пакетов.
JustinC
Флаг -f не нужен.
Дэнниман
20

Правильный способ отключить и запустить сервис - создать файл XX.override,

echo 'manual' > /etc/init/mysqld.override

Таким образом, сервис upstart не запустится автоматически

маргаритка
источник
Это все еще работает с Ubuntu 12.04?
РСК
@RSK да, почему бы тебе не попробовать?
маргаритка
1
Я пытался и не работал для меня. Позвольте мне попробовать еще раз и обновит вас.
РСК
Нет, это не работает на Ubuntu-14.04.
Привет-ангел
1
@RSK yes, why don't you just give it a try?Я полагаю, потому что очень неудобно перезагружать систему с «попыткой» каждого совета с этой страницы.
user907860
7

@ warl0ck это правильно; хотел бы добавить, что эта информация достаточно хорошо документирована в документации Upstart: http://upstart.ubuntu.com/cookbook/#disabling-a-job-from-automatics-starting.

В частности:

В Upstart 1.3 вы можете использовать файлы переопределения и ручной раздел, чтобы добиться того же результата более простым способом [27]:

# echo "manual" >> /etc/init/myjob.override

Обратите внимание, что вы можете достичь того же эффекта, выполнив это:

# echo "manual" >> /etc/init/myjob.conf

Однако использование функции переопределения означает, что вы можете оставить исходный файл конфигурации задания без изменений.

Чтобы вернуться к исходному поведению, либо удалите, либо переименуйте файл переопределения (или удалите раздел руководства из файла «.conf»).

Марк Глоссоп
источник
5

В этом вам также поможет отличное программное обеспечение. Это называется rcconf.

Просто скачайте его, используя:

sudo apt-get install rcconf

и использовать его с командой

rcconf

Вы получаете хороший (командная строка) интерфейс для отключения / включения сервисов.

Delh
источник
Это не включено в систему, поэтому установка большего количества вещей не будет лучшим ответом.
m3nda
но очень полезно: D
Magico
1

Попробуйте найти /etc/rc2.dи переименовать то, что вы не хотите запускать при запуске: измените (начальное, заглавное) «S» на «K» (например, S02mysqlна K02mysql). Если вы передумаете, просто измените это. Я думаю, что 2 относится к уровню запуска, в этом случае 2 является уровнем запуска по умолчанию, многопользовательским. Вероятно, именно здесь у вас есть большинство вещей для повседневного использования компьютера.

Изменить : Прочитайте комментарий Джеймса О'Гормана ниже.

Эмануэль Берг
источник
1
Да, «2» относится к уровню выполнения. Вы можете проверить текущий уровень запуска, используя who -rили runlevel.
RanRag
Это правда who --runlevel.
Эмануэль Берг
1
Хотя это позволяет добиться того, чего вы хотите, технически это неправильно. В терминах инициации SysV сценарии 'S' являются сценариями запуска, а 'K' - сценариями уничтожения - т.е. S запускаются по порядку при запуске, а K запускаются по порядку при завершении работы (или переходе на более низкий уровень выполнения).
Джеймс О'Горман
@ JamesO'Gorman: Интересно, я на Debian, ты хочешь сказать, что мои "K-скрипты" запускаются при выключении? Есть ли какая-нибудь буква, которая может быть использована для полного отключения скрипта, без какой-либо опасности? (Практически целесообразно хранить их в одной папке, если возникнет новая ситуация, когда вы захотите их.)
Эмануэль Берг,
@EmanuelBerg Да, initпри выключении будет запускаться «KXXscript stop». Вы должны либо удалить символическую ссылку, либо удалить бит выполнения из реального сценария инициализации. Я считаю, что Debian использует это update-rc.dдля управления. RHEL (и производные) использовать chkconfig.
Джеймс О'Горман
0

С Upstart конфигурация службы находится в файлах в /etc/init/. Например, ssh контролируется с помощью файла конфигурации/etc/init/ssh.conf

Этот файл определяет «события», которые побудят Upstart запустить «задание».

Чтобы предотвратить автоматический запуск службы, можно использовать один из нескольких методов:
a) Переименуйте файл service.conf, чтобы он не заканчивался на .conf
b) Закомментируйте строку «start on» из файла service.conf.

В более новых версиях upstart (по крайней мере начиная с v1.3) вы также можете переопределить запуск on line, используя файл service.override, так что вы можете использовать:
# echo manual > /etc/init/service.override

Наконец, вы также можете добавить ключевое слово «manual» в конец файла конфигурации службы, например, через:
# echo manual >> /etc/init/service.conf

Обратите внимание, что это не «останавливает» запущенную службу, а только предотвращает ее автоматический запуск. Установив «ручной» запуск, вы управляете сервисом с помощью initctl, например, чтобы остановить и запустить демон SSH:
# initctl stop ssh
# initctl start ssh

Возможно лучшая документация для Upstart находится на http://upstart.ubuntu.com/cookbook/

Раздел 11.44 описывает «отключение службы от автозапуска», здесь: http://upstart.ubuntu.com/cookbook/#disabling-a-job-from-automatics-starting.

Johan
источник
0

Ну, я должен сказать, что заявление

echo "manual" >> /etc/init/myjob.override

немного вводит в заблуждение, потому что это означает добавить файл переопределения. Я проверил это на 14.04 с сетевым менеджером, и следующее не работает

vim /etc/init/network-manager.override:
start
manual

Однако это сработало

vim /etc/init/network-manager.override:
#start
manual

Итак, IMO, initctl ищет первую незакомментированную строку и выполняет ее. Может быть, я ошибаюсь, но это были мои результаты испытаний. Входы приветствуются.

infoclogged
источник