Як запобігти автоматичному запуску служб Linux?


11

Я нещодавно перейшов з Windows на Linux (xubuntu)

Я розробник і встановив усе, що мені потрібно, LAMP. У Windows я вимикав усі непотрібні сервіси - мені не потрібно постійно працювати Apache або MySQL. Кожен раз, коли мені потрібен MySQL, я використовував:

net start mysql

Як зробити те ж саме в Linux?

  1. Відключення непотрібних демонів від автоматичного запуску?
  2. Починати їх лише тоді, коли мені вони потрібні?

3
Я думаю, ви повинні включити точну версію ubuntu, яку ви використовуєте. Нові версії ubuntu використовують upstart, у якого є свої gotchas.
vtest

Редагувати: Я використовую останню версію 10.04 Xubuntu, але я не хочу використовувати для цього і графічний інтерфейс, лише з терміналу. Схоже, @prhq отримав щось у своїй відповіді. Що таке випуск?
Авів

Належить в іншому місці - або за помилкою сервера або Unix. І все-таки корисна.
ripper234

Відповіді:


11

У більшості дистрибутивів Linux ви можете вручну запускати / зупиняти послуги, виконуючи такі команди (як root або використовуючи sudo):

# /etc/init.d/apache2 start
# /etc/init.d/mysqld start

# /etc/init.d/apache2 stop
# /etc/init.d/mysqld stop

Які сервіси, які автоматично запускаються, керуються посиланнями на файли в /etc/rc evidencerunlevelSense.d/. Знайдіть поточний рівень запуску за допомогою команди «runlevel» як корінь

# runlevel
N 2

Що тут вказує на рівень запуску 2 Тепер вам просто потрібно видалити ті файли в /etc/rc2.d/, які ви не хочете запускати.

Видалення apache та Mysql на робочому столі зазвичай нормально, але пам’ятайте про видалення інших служб.


3
Це досить оманливо, навіть якщо ви сказали "більшість дистрибутивів". Я б визначив ваш рецепт як специфічний distro.
vtest

Що ви мали на увазі? Я можу думати лише про ArchLinux (але ці користувачі повинні вже знати, що вони роблять). Звичайно, деякі дистрибутиви мають специфічні інструменти, але вищевказана техніка працює і на них.
hultqvist

Досить дивно, я бачу файл з назвою S91apache2 у каталозі /etc/rc2.d, я думаю, що він запускає apache2 ... але я не можу знайти жодного файлу щодо MySQL. Де я можу дізнатися про ці автоматичні стартові демон?
Авів

Тоді сервер mysql може бути не налаштований для автоматичного запуску. Цей сайт виглядає як добре пояснення: yolinux.com/TUTORIALS/LinuxTutorialInitProcess.html
hultqvist

Зауважте, що під * BSD та деревом Slackware каталог є /etc/rc.d/.
new123456

15

Для версій Ubuntu, які використовують системне (15.04 та новіші), використовуйте:

systemctl disable service

Це зробить роботу. Це вимкне службу і не перезапуститься після перезавантаження. Щоб тимчасово ввімкнути, просто запустіть послугу. Не вмикати .

Щоб знайти ім’я служби, використовуйте

service --status-all

Інші команди:

systemctl start service- Використовуйте його для запуску послуги. Не зберігається після перезавантаження

systemctl stop service- Використовуйте його, щоб зупинити послугу. Не зберігається після перезавантаження

systemctl restart service - Використовуйте його для перезапуску послуги

systemctl status service- Показує статус послуги. Показує, чи працює служба наразі.

systemctl enable service- Увімкнення послуги при наступному перезавантаженні або наступному запуску події. Він зберігається після перезавантаження.

systemctl disable service- Вимикає послугу при наступному перезавантаженні або наступній події зупинки. Він зберігається після перезавантаження.


2
Шкода, що це не прийнята відповідь :). Дякую, я зовсім забув про цю команду.
Nordes

8

Ubuntu 10.04 перебуває в середині переходу між двома системами управління сервісом: SysVinit (традиційна система, яка використовується більшістю дистрибутивів Linux) та Upstart (новіша система, яку підштовхує Ubuntu і стає доступною у все більшій кількості дистрибутивів).

Сценарії управління послугами SysVinit є /etc/init.d. Ви можете розпочати послугу /etc/init.d/SERVICENAME startі зупинити її /etc/init.d/SERVICENAME stop. Незалежно від того, чи послуга запускається автоматично під час завантаження, залежить від наявності символічних посилань, /etc/rc?.dде ?знаходиться цифра від 2до 5( рівень запуску ). Найпростіший спосіб запобігти автоматичному запуску служби під час завантаження - це використання update-rc.d SERVICENAME disable.

Файли конфігурації управління сервісом Upstart знаходяться в /etc/init. Ви можете розпочати послугу start SERVICENAMEі зупинити її stop SERVICENAME. Файл конфігурації /etc/init/SERVICENAME.confмістить рядок , що вказує , коли для запуску служби: start on …. Простий спосіб відключення цих служб - змінити цю лінію на start on never and (…). Якщо ви не хочете редагувати файл, ви також можете повністю відключити послугу, не плутаючи систему упаковки, перейменувавши її не закінчуючи .conf.

dpkg-divert --add --local --divert /etc/init/foo.conf.disabled --rename /etc/init/foo.conf

Станом на Ubuntu 10.04, Apache поставляється із сценарієм SysVinit, а Mysql поставляється із сценарієм Upstart.


Чи редагування servicename.conf дійсно кращим способом? Особливо, коли оновлення теоретично можуть оновити ці файли конфігурації та змінити зміни
Масса,

@Masse: Це не завжди кращий спосіб, але він має перевагу завжди працювати. Деякі сервіси читають файл у ньому /etc/defaultі там є START_FOOопція, яку можна вимкнути, але багато хто очікує запустити, якщо вони встановлені. Оновлення не замінять ваші зміни без запиту, оскільки це все конфілі.
Жил "ТАК - перестань бути злим"

Ого. Це здається головним кроком назад.
Масса

@Masse: Конфілі призначені для редагування адміністратором. Але якщо ви цього не хочете, ви можете також dpkg-divertперейменувати службовий файл. Однак якщо ви зробите це, ви не зможете явно запустити послугу.
Жил 'ТАК - перестань бути злим'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.