
Когда процесс init выполняется после загрузки ядра, считывает ли он файл /etc/inittab сверху вниз, т. е. выполняет каждую строку по мере ее появления в файле?
Если это так, то, исходя из прочитанного и понятого, означает ли это, что он переходит на документированный уровень выполнения, а затем запускает процесс sysinit или наоборот?
Например, вот типичные примеры, которые я видел:
id:3:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
решение1
Во-первых, обратите внимание, что формат inittab
выглядит следующим образом:
Identifier:RunLevel:Action:Command
Ключевым моментом здесь является runlevel
. Приведем следующий пример кода:
a:3::
b:123::
c:23::
d:123::
e:23::
Тогда порядок выполнения различных идентификаторов, начиная с runlevel
1, будет следующим:
init 1: b d
init 2: c e
init 3: a
overall: b d c e a
Как вы можете видеть, он запустит их в том порядке, в котором они перечислены в файле.группа по уровню запуска! Также помните, если идентификатор не находится на указанном уровне выполнения, ему будет выдан а SIGTERM
затем SIGKILL
.
решение2
Это не скрипт, который обрабатывается в каком-то определенном порядке. Это файл конфигурации, который сообщает системе, какой скрипт/команды запускать для определенного события или уровня запуска. Порядок записей в файле не имеет значения, и вы можете иметь несколько скриптов или команд для каждого уровня запуска.
Первая отображаемая строка "id:3:initdefault:" сообщает системе, что уровень выполнения по умолчанию - 3 => многопользовательский режим для большинства разновидностей.
Строка «si::sysinit:...» сообщает системе о необходимости запустить скрипт /etc/rc.d/rc/sysinit при инициализации системы (запускается при загрузке системы).
если вы используете inittab, вы должны получить список всех опций для файла.