Відповіді:
Ви можете змінити порядок, перейменувавши символьні посилання в /etc/rcX.d/, де x буде вашим рівнем запуску.
Ви побачите купу файлів, починаючи з Sxx або Kxx. S посилання простежуються під час запуску, в той час як K - розбираються для відключення. Тут xx представляє порядок.
Але цей порядок встановлено з причини, тому будьте обережні, змінюючи їх. Наприклад. ntpd повинен запускатися лише після ініціалізації мережевої підсистеми.
Замість того, щоб робити це вручну, як це пропонується в інших відповідях, ви також можете змінити сценарій init. Просто додайте такий рядок до заголовка:
# chkconfig: 35 90 10
Це дозволить chkconfig
додати службу до рівнів 3 та 5 із початковою позицією 90 та позицією вбивства 10.
chkconfig off servicename && chkconfig on servicename
Ви хочете трохи ознайомитися з каталогів runlevels та rc.d. Всередині каталогів rc.d ви можете знайти посилання S і K, як, наприклад, S20apache K10apache, що в основному визначає запуск / вимкнення сценаріїв.
У цій архітектурі вносяться деякі зміни, але більшість Linux використовує її.
rcorder
, існували вже деякий час.
svc
, але міг обійтися без xml-речей
Якщо ви приїхали сюди, швидше за все, у вас є два сервіси, коли одна залежить від іншої, але, оскільки вони починаються в неправильному порядку, той із залежністю не вдається запуститися. Пропозиції щодо редагування символьних посилань є інформативними, з точки зору того, як ілюструвати, як послідовність запуску працює, і працюватимуть добре, поки хтось не зробить "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, і все в порядку зі світом.