Как видно из названия, как изменить порядок запуска / загрузки служб Linux?
Вместо того, чтобы делать это вручную, как предлагается в других ответах, вы также можете изменить сценарий инициализации. Просто добавьте в шапку такую строчку:
# chkconfig: 35 90 10
Это проинструктирует chkconfig
чтобы добавить службу к уровням выполнения 3 и 5, с начальной позицией 90 и положением завершения 10.
Вы можете изменить порядок, переименовав символические ссылки в /etc/rcX.d/, где x будет вашим уровнем выполнения.
Вы увидите группу файлов, начинающихся с Sxx или Kxx. S-ссылки отслеживаются во время запуска, а K анализируются для завершения работы. Здесь xx обозначает порядок.
Но этот порядок установлен не просто так, поэтому будьте осторожны при их изменении, например. ntpd должен запускаться только после инициализации сетевой подсистемы.
Если вы прибыли сюда, скорее всего, у вас есть две службы, одна из которых зависит от другой, но из-за того, что они запускаются в неправильном порядке, не запускается та, у которой есть зависимость. Предложения по редактированию символических ссылок являются информативными с точки зрения иллюстрации того, как работает последовательность запуска, и будут работать нормально, пока кто-то не выполнит команду 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, и все в порядке.
Вы хотите немного прочитать о своем уровни выполнения и rc.d каталоги. Внутри каталогов rc.d вы можете найти ссылки S и K, такие как S20apache K10apache, которые в основном определяют запуск / завершение скриптов.
В эту архитектуру вносятся некоторые изменения, но большинство Linux все еще ее используют.