Ответы:
Вы можете изменить порядок, переименовав символические ссылки в /etc/rcX.d/, где x будет вашим уровнем выполнения.
Вы увидите кучу файлов, начинающихся с Sxx или Kxx. S-ссылки отслеживаются во время запуска, а K-ссылки анализируются на отключение. Хх здесь представляет порядок.
Но этот порядок установлен по причине, поэтому будьте осторожны при их изменении. Например. ntpd должен запускаться только после инициализации сетевой подсистемы.
Вместо того, чтобы делать это вручную, как предложено в других ответах, вы также можете изменить скрипт инициализации. Просто добавьте такую строку в шапку:
# chkconfig: 35 90 10
Это даст указание chkconfig
добавить службу к уровням выполнения 3 и 5 с начальной позицией 90 и позицией уничтожения 10.
chkconfig off servicename && chkconfig on servicename
Вы хотите прочитать немного о своих уровнях запуска и каталогах rc.d. Внутри каталогов rc.d вы можете найти ссылки S и K, например, S20apache K10apache, который в основном определяет порядок запуска / выключения скриптов.
В эту архитектуру вносятся некоторые изменения, но большинство linux до сих пор ее используют.
rcorder
были вокруг некоторое время.
svc
, но могу обойтись без xml
Если вы прибыли сюда, скорее всего, у вас есть две службы, одна из которых зависит от другой, но, поскольку они запускаются в неправильном порядке, служба с зависимостью не запускается. Предложения по редактированию символических ссылок являются информативными, с точки зрения иллюстрации того, как выполняется последовательность запуска, и будут работать нормально, пока кто-то не выполнит «chkconfig on» в вашем сервисе, после чего символические ссылки будут воссозданы в том виде, в котором они были изначально. На самом деле, вы хотите решить проблему на уровне сценария инициализации, что на самом деле гораздо менее грязно. Он также будет одинаковым для разных уровней выполнения. Вероятно, вам не нужно добавлять строку "# chkconfig", как предложено в ответе 4, поскольку там, вероятно, уже будет аналогичная строка.
Я буду использовать пример сервера под управлением Openldap (slapd) с базой данных MySQL (mysqld). Конфигурирование этой пары, и почему вы можете захотеть, это совсем другая история.
При загрузке Openldap не запускается, потому что это зависит от MySQL, и последовательность запуска пытается запустить его раньше - slapd имеет позицию 27, а mysqld - позицию 64
Соответствующие символические ссылки в /etc/rc3.d/
S27slapd -> ../init.d/slapd
and
S64mysqld -> ../init.d/mysqld
Я ищу значения, установленные в двух сценариях инициализации:
[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, и с миром все в порядке.