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.


Ви кажете, що використовуєте 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

Уривок чоловічої сторінки :

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


2
У мене немає достатньої репутації, щоб проголосувати за це, і це робити без пояснень, все одно було б нечесним, тож просто коментар: Питання від @Noob стосується Ubuntu 12.04, який використовує Upstart (/etc/init/*.conf конфігурація файли) для більшості системних демонів (як згадував @Noob), а ваша пропозиція працює лише для демонів, які почали використовувати сценарії в /etc/init.d/* (старий стиль SysV). Редагувати: Для запису warl0ck має правильну відповідь (спасибі!).
xolox

3
Питання стосується гіпотетичної чи загальної ситуації, що використовує mysql як конкретний актуальний випадок. ОП здавалося хоча б частково обізнаним з цією відповіддю, але це може слугувати нащадкам, щоб зауважити, що деякі корисні пакети не вшановують формат початківців (наприклад, як webmin та багато власноруч створених з вихідних пакетів у часі коментарів) . Це означає, що цей метод може бути дійсною частковою відповіддю для контексту, як і відповіді warl0ck та Марка для вирішення конкретної точки гіпотетичної служби mysql, встановленої разом із менеджером пакунків.
JustinC

Прапор -f не потрібен.
dannyman

20

Правильним способом відключення та запуску послуги є створення файлу XX.override,

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

Таким чином послуга на початку не запуститься автоматично


Це все ще працює Ubuntu 12.04?
РСК

@RSK так, чому б ти просто не спробувати?
ромашка

1
Я намагався і не працював для мене. Повторіть спробу і оновить вас.
РСК

Ні, це не працює на Ubuntu-14.04.
Привіт-Ангел

1
@RSK yes, why don't you just give it a try?Я гадаю, тому що дуже незручно перезавантажувати систему "спробувати" до кожного поради з цієї сторінки.
користувач907860

7

@ warl0ck має право; хотів додати, що ця інформація досить добре зафіксована в документації Upstart: http://upstart.ubuntu.com/cookbook/#disabling-a-job-from-automatically-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

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


Це не входить у систему, тому встановлення більшої кількості речей не було б кращою відповіддю.
м3нда

але справді корисно: D
Magico

1

Спробуйте перейти до /etc/rc2.dі перейменувати те, що ви хочете не запускати при запуску: змініть (початкове, велике) "S" на "K" (наприклад, S02mysqlна K02mysql). Якщо ви передумали, просто переверніть його. Я думаю, що 2 посилається на runlevel, в цьому випадку 2 є типовим багатокористувацьким рівнем. Можливо, саме там у вас є більшість матеріалів для щоденного користування комп’ютером.

Редагувати : Прочитайте коментар Джеймса О'Гормана нижче.


1
Так "2" стосується рівня прогону. Ви можете перевірити поточний рівень запуску за допомогою who -rабо runlevel.
RanRag

Це правда, who --runlevel.
Емануель Берг

1
Хоча це досягає того, що ти хочеш, технічно це неправильно робити. У термінах SysV init сценарії "S" - це стартові сценарії, а "K" - це сценарії вбивства - тобто S запускаються в порядку під час запуску, а K виконується в порядку при відключенні (або зміні на нижчий пробіг).
Джеймс О'Горман

@ JamesO'Gorman: Цікаво, я на Debian, ти кажеш, мої "K-сценарії" запускаються при відключенні? Чи є якийсь лист, який можна використати для відключення сценарію взагалі, без жодної небезпеки? (Доцільно зберігати їх у одній папці, якщо виникла нова ситуація там, де ви цього хочете.)
Емануель Берг

@EmanuelBerg Так, initпри завершенні роботи буде запущено 'KXXscript stop'. Вам слід або видалити символьне посилання, або видалити біт виконання з справжнього сценарію init. Я вважаю, що Debian використовує update-rc.dдля управління цим. Використання RHEL (та похідних) chkconfig.
Джеймс О'Горман

0

Під час запуску конфігурація служби лежить у файлах у /etc/init/. Наприклад, ssh управляється за допомогою конфігураційного файла/etc/init/ssh.conf

Цей файл визначає "події", які підкажуть Upstart почати "роботу".

Щоб запобігти автоматичному запуску послуги, можна використовувати один із декількох методів:
а) Перейменуйте файл service.conf, щоб він не закінчувався .conf
b) Прокоментуйте рядок "start on" з файлу service.conf.

У новіших версіях upstart (щонайменше v1.3) ви також можете змінити початок в режимі on-line, використовуючи файл service.override, щоб ви могли використовувати:
# echo manual > /etc/init/service.override

Нарешті, ви можете також додати ключове слово "керівництво" до кінця файлу налаштування служби, наприклад, за допомогою:
# 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-automatically-starting


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 шукає перший коментований рядок і виконує його. Можливо, я помиляюся, але це були мої результати тесту. Вхідні дані вітаються.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.