Відключити послугу від запуску на всіх рівнях запуску?


61

У мене є сервіс, fooякий наразі починається з рівня 3 і вище. Як я можу не допустити цього, не користуючись цим update-rc.d foo stop 3 ., що (якщо я правильно це розумію) вимикає послугу при кожній зміні рівня пробігу.

(тобто, якщо я був у runlevel 1 і ввімкнено foo, то коли я перейшов на runlevel 3, він буде відключений, ні?)

Запуск Debian GNU / Linux Lenny.

Відповіді:


57

Термін "стоп" не заважає демону запускатися, а навпаки, вимикає його під час входу у вказаний пробіг.

Якщо ви просто хочете видалити службу / демон з одного рівня виконання, update-rc.dяк було зазначено Bei Freiheit або просто видалити символічне посилання з /etc/rcX.d/, де X ваш рівень запуску. Якщо ви не хочете, щоб послуга запускалася автоматично, update-rc.d -f foo removeзробите свою справу.


2
Будь-які ідеї, як це зробити на Debian 8? sudo update-rc.d -f sunrpc removeне працює; все ще присутній після перезавантаження.

Debian 9 Це не працювало для мене, і тоді я зрозумів, о дерпе, потрібно судо. update-rc.d не дає відгуків, якщо ви забудете судо. Я підтвердив, що посилання вже не булоls /etc/rc*.d
Джейсон Данкельбергер

Команда не вдалася на Ubuntu16.04
Стефан

Переконайтеся, що ви передали правильне ім’я служби, update-rc.d не дає вам відгуків, якщо його не існує.
marcovtwout

Що робити, якщо ви хочете його знову ввімкнути пізніше? Відповідь нижче @ "Не зараз" краще, оскільки ви можете вимкнути та повторно включити після. update-rc.d apache2 disable
Вадіх М.

54

Налаштування програм запуску Linux за допомогою sysv-rc-conf :

apt-get install sysv-rc-conf

Як вже зазначали інші, тут також update-rc.d для рядка cmd.

Наприклад, бігайте

update-rc.d apache2 disable

щоб відключити apache2 з усіх рівнів запуску.


чудовий інструмент - не знав про це. Дякую!
PEra

1
зауважте, що це не зупинить запущену службу, щоб домогтися цього, щоб додати це: service foo stopабо перезавантажте сервер
rubo77

15

Короткий:

Немає надійного способу зробити це швидко.

Довго:

Поточний Debian (Debian нестабільний станом на 06.06.2012) наразі не має надійного короткого способу послідовного відключення послуги / демон. - Оскільки оновлення пакета демонів безумовно запускає "/etc/init.d/package restart", відключивши його для цього рівня запуску чи ні.

Щоб переконатися, що демон не починається, ви можете:

  • видаліть його
  • зробіть локальне переадресацію сценарію /etc/init.d/xyz (таким чином, інструменти не знайдуть його)
  • використовувати / зловживати конфігураційним файлом відповідного пакету, щоб спровокувати ранній вихід із цього сценарію (наприклад, поставте "вихід" на початку / etc / default / xyz у випадку, якщо він отриманий з сценарію init)
  • Подивіться в цьому init-скрипті на заздалегідь визначені "офіційні" способи не запускати цей демон

Існує / був (?) Якийсь ініт-політ - щось на крок для сценаріїв init в Debian, який повинен був заповнити цю відсутність функціоналу. - Я спробував ним скористатися, знайшов його складним, знайшов помилку і більше ніколи не торкався її.

Оновлення:

Перейдіть на "systemd", альтернативу "initd". Пакет debian існує, і ви можете відключити послугу приблизно таким чином:

cd /etc/systemd/system
ln -s /dev/null xyz.service

1
+1 Це така корисна відповідь - і якби я цього не стався, я був би пошкоджений пізніше - дякую!

Ви можете так unlink xyz.serviceсамо добре?
jaggedsoft

@NextLocal, я забув, чому я це написав, але вважаю, що якщо служба має сценарії для init System V, systemdїх використовуватиме. - Тож посилання говорить про те, щоб їх не шукати.
Роберт Сімер

Зауважте, що редагування /etc/default/xyzфайла для додавання exitне завадить пакувальнику перезаписати файл із правильною версією під час наступного оновлення. (У пакеті зберігаються конфігураційні файли, і в більшості випадків скрипти init не розглядаються як такі.) Тому в більшості випадків це не допоможе.
Алексіс Вілке

На допомогу приходить Девуан: замість systemd він використовує класичну систему SysV rc.d / init.d (або openrc, а також якщо хтось вирішить для цього).
Csaba Toth,

5

Виконайте цю команду

apt-get install rcconf

Після встановлення запустіть rcconf в SSH, і ви отримаєте діалогове вікно з відображенням усіх служб, встановлених для запуску під час завантаження. Виберіть їх, натиснувши пробіл, щоб відключити / увімкнути конкретний, і ви вже готові, просто натисніть кнопку Ок, і служба не зможе запуститись знову при наступному завантаженні. Використовуючи це роками. Дуже зручний інструмент для користувачів Debian / Ubuntu, як я.


Легко як 1,2,3! Дякуємо за цей невеликий інструмент командного рядка.
DanielaWaranie

2

Я плутаю те, що ви намагаєтеся досягти.

На яких рівнях запуску ви хочете працювати foo?

Якщо ви завжди хочете, щоб він працював, використовуйте update-rc.d foo defaults; це зупинить його в 0, 1 і 6, а поки він буде працювати в 2, 3, 4 і 5. (1 не повинен запускати нічого, крім оболонки, 0 і 6 зупиняються і перезавантажуються)

Якщо ви хочете вказати, в яких саме рівнях запуску виконувати:

update-rc.d foo stop 0 1 6 3 . start 2 4 5 .


1

Почніть використовувати insserv з Debian7

Виведіть усі сервіси та інформацію про її рівень

insserv --showall

Видаліть перелічені сценарії з усіх рівнів запуску

insserv --remove [specify_script]

0

Bootup менеджер Ubuntu є свого роду SysV-RC-конф світла , більш дружній, графічний інтерфейс версії, і багато людей читають цю тему буде зрозуміло , що.

http://www.marzocca.net/linux/bum.html


0

У системі на основі червоного капелюха ви могли використовувати

chkconfig httpd off
chkconfig httpd --del

щоб видалити сервер із рівнів запуску

у системі на базі debian усі сервіси повинні бути запущені файлами, знайденими в каталогах /etc/rc?.d/, ці файли мають символічне посилання на відповідні файли в /etc/init.d/. Якщо ви хочете, щоб сервіс не запускався за замовчуванням, ви можете перейменувати / видалити його з каталогу /etc/rc?.d, і ваша зміна буде збережена при оновлення пакета до тих пір, поки одна із стартових посилань все ще з’явиться в одному з інші (3,4 та 5) каталоги. Або ви можете скористатися командою update-rc.d, щоб змінити посилання (і), і якщо ви хочете запустити послугу після цього, ви можете використовувати /etc/init.d/service_name start, якщо ви залишите старт у кінці, дати вам параметри, які можна використовувати, як зупинка, перезапуск, перезавантаження ...

Я думаю, ви можете використовувати sysv-rc-conf, щоб відключити його.


Питання позначене Debian, а не Fedora чи Red Hat.

0
sudo update-rc.d SERVICE disable

Якщо ви хочете вказати рівні запуску.

sudo update-rc.d SERVICE disable|enable [S|2|3|4|5]

Не забудьте змінити послугу на назву програми.

sudo service SERVICE restart

0

Чому б не створити резервну копію сценарію запуску деінде та не видалити його в /etc/init.d/? Якщо update-rc.d не працює.

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