Як змінити порядок запуску / завантаження служб Linux?


Відповіді:


11

Ви можете змінити порядок, перейменувавши символьні посилання в /etc/rcX.d/, де x буде вашим рівнем запуску.

Ви побачите купу файлів, починаючи з Sxx або Kxx. S посилання простежуються під час запуску, в той час як K - розбираються для відключення. Тут xx представляє порядок.

Але цей порядок встановлено з причини, тому будьте обережні, змінюючи їх. Наприклад. ntpd повинен запускатися лише після ініціалізації мережевої підсистеми.


21

Замість того, щоб робити це вручну, як це пропонується в інших відповідях, ви також можете змінити сценарій init. Просто додайте такий рядок до заголовка:

# chkconfig: 35 90 10

Це дозволить chkconfigдодати службу до рівнів 3 та 5 із початковою позицією 90 та позицією вбивства 10.


Це. Абсолютно це. Якщо ви перейменовуєте символьні посилання вручну, ви отримаєте сюрприз, якщо хтось прийде і біжитьchkconfig off servicename && chkconfig on servicename
batfastad

Працював як шарм. Мені потрібно було налаштувати залежності між mysqld і контейнером сервлетів. Я не міг з'ясувати стартову позицію mysqld, тому я налаштував початкове положення контейнера сервлетів до 99, і він працює просто чудово, mysqld починає першим. Спасибі.
jpangamarca

7

Ви хочете трохи ознайомитися з каталогів runlevels та rc.d. Всередині каталогів rc.d ви можете знайти посилання S і K, як, наприклад, S20apache K10apache, що в основному визначає запуск / вимкнення сценаріїв.

У цій архітектурі вносяться деякі зміни, але більшість Linux використовує її.


Я вражений, що більшість дистрибуторів все ще використовують цю систему; кращі системи, як, наприклад rcorder, існували вже деякий час.
Chris S

Я якось заздряв сонелісом svc, але міг обійтися без xml-речей
coredump

Це місце на. Однак, залежно від вашого дистрибутиву, у вас можуть бути різні способи зміни цього значення - тому читайте детальну документацію для вашого дистрибутива.
Ендрю М.

1
У деяких дистрибутивах, таких як Ubuntu, використовується Upstart ( Wikipedia ).
Призупинено до подальшого повідомлення.

7

Якщо ви приїхали сюди, швидше за все, у вас є два сервіси, коли одна залежить від іншої, але, оскільки вони починаються в неправильному порядку, той із залежністю не вдається запуститися. Пропозиції щодо редагування символьних посилань є інформативними, з точки зору того, як ілюструвати, як послідовність запуску працює, і працюватимуть добре, поки хтось не зробить "chkconfig on" на вашій службі, і в цей момент символьні посилання не будуть створені, як вони були спочатку. Дійсно, ви хочете вирішити цю проблему на рівні сценарію init, який насправді набагато менш брудно зробити. Це також буде узгоджено для різних рівнів. Вам, ймовірно, не потрібно буде додавати рядок "# chkconfig", як пропонується у відповіді 4, оскільки там, ймовірно, вже буде подібний рядок.

Я буду використовувати приклад сервера, на якому працює Openldap (slapd) із серверним бази даних MySQL (mysqld). Налаштування цієї пари, і чому ви цього хочете, - це зовсім інша історія.

Під час завантаження Openldap не вдається запуститися, оскільки це залежить від MySQL, і послідовність запуску має намагатися запустити перед цим - slapd має позицію 27, а mysqld - позицію 64

Відповідні символьні посилання в /etc/rc3.d/ є

S27slapd -> ../init.d/slapd 
and
S64mysqld -> ../init.d/mysqld

Я шукаю значення, встановлені в двох сценаріях init:

[root ~]# grep chkconfig /etc/rc.d/init.d/mysqld
# chkconfig: - 64 36

[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 27 73 

Я редагую рядок chkconfig в /etc/rc.d/init.d/slapd, щоб мати початкову позицію вище, ніж позицію в /etc/rc.d/init.d/mysqld (я вибрав 85)

[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 85 73

Я роблю "chkconfig slapd on" і повторно перевіряю посилання

[root ~]# chkconfig slapd on
[root ~]# ls -l /etc/rc3.d/ | grep mysqld
lrwxrwxrwx  1 root root 16 Dec 10 13:45 S64mysqld -> ../init.d/mysqld
[root ~]# ls -l /etc/rc3.d/ | grep slapd
lrwxrwxrwx  1 root root 15 Apr 28 14:18 S85slapd -> ../init.d/slapd

Тепер, коли цей сервер запускається, mysqld запускається перед slapd, і все в порядку зі світом.

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