SysVinit работает так. Сценарии инициализации для каждого пакета находятся в /etc/init.d . Ссылки на эти скрипты находятся в /etc/rcS.d и /etc/rc[0-6].d . Эти ссылки начинаются либо с S (начало), либо с K (убить) и двухзначным числом.
Когда система загружается и запускается процесс SysVinit, он просматривает /etc/rcS.d и выполняет сценарии, начиная с S, упорядоченные по номеру. (Я полагаю, что он передает аргумент «start» сценариям, но я не уверен.)
После обработки всех сценариев /etc/rcS.d система начинает переходить на определенный уровень выполнения. В Ubuntu при загрузке с обычного рабочего стола уровень запуска по умолчанию равен 2 . Так что SysVinit выглядит в /etc/rc2.d и
- останавливает все сервисы со ссылками, начинающимися с K, упорядоченными по номеру; а также
- запускает все сервисы со ссылками, начинающимися с S, упорядоченными по номеру.
Если вы вместо этого загрузились в режиме восстановления Ubuntu, вы загрузитесь до уровня запуска 1 . После запуска всех служб уровень запуска системы официально устанавливается.
Наконец, система запускает скрипт /etc/rc.local .
Если вы переключите уровни выполнения позже, SysVinit запустит тот же базовый процесс: он не проверяет /etc/rcS.d, но переходит непосредственно к обработке ссылок в /etc/rcN.d (где N - это тот, который вводится на уровне запуска).
Вы также можете написать сценарий Upstart. Я писал об Upstart ранее, так что проверьте там для более подробной информации. Upstart-скрипты хранятся в / etc / init ; чтобы написать их, просмотрите существующие сценарии, чтобы понять, как они работают, и прочитайте справочную страницу init (5) .