logo search
Сборная ответов к госэкзаменам

Процесс Init.

Процесс init является главным диспетчером процессов. Его основная задача - создание процессов в соответствии со схемой, хранящейся в файле /etc/inittab. Init также контролирует работу автономных процессов, требующихся конкретной системе.

Процесс init запускается в рамках системы UNIX в качестве последнего шага процедуры загрузки. Сначала init ищет в файле /etc/inittab строку initdefault. Если таковая имеется, то init использует ее для определения начального значения уровня выполнения. Если такой строки нет, то init запрашивает начальное значение уровня выполнения у пользователя через виртуальную системную консоль. В ответ на этот вопрос можно ввести только одну из цифр от 0 до 6 либо буквы S или s. Любой другой ответ будет отвергнут и вопрос будет задан вновь. Если в качестве ответа введена цифра от 0 до 6, то init устанавливает соответствующий уровень выполнения.  Если в ответ вводится буква S или s, init переходит в однопользовательский режим. Это единственный уровень выполнения, который не требует наличия заранее подготовленного файла /etc/inittab.

Для запуска процессов, упомянутых в файле /etc/inittab, init читает весь файл и для каждой строки, процесс в которой требует перезапуска, порождается потомок. После запуска всех процессов, указанных в файле /etc/inittab, init ожидает, пока либо один из его потомков завершится, либо будет получен сигнал об ошибке питания, либо порожденный пользователем init предпишет изменить уровень выполнения. Когда одно из перечисленных условий становится истинным, init вновь просматривает файл /etc/inittab. Добавлять строки в файл /etc/inittab можно в любое время, однако init все равно будет ожидать одно из трех вышеуказанных событий. Чтобы заставить init немедленно обработать файл /etc/inittab, его следует разбудить командами init Q или init q.

Независимо от того, в каком режиме начинается работа, с помощью комады init можно переходить из одного режима в другой . Уровень выполнения изменяется при запуске init'а привилегированным пользователем. Запущенный пользователем init посылает соответствующие сигналы исходному процессу init, созданному при перезагрузке системы, сообщая, на какой уровень выполнения надо перейти. Если режим по умолчанию √ 2, система запускается в режиме 2, после чего командой init 3 ее можно переключить в режим 3. В следующем примере показано, как команда init переводит систему в однопользовательский режим.

# init s

Можно запустить init, указав в качестве аргумента один из псевдоуровней a, b или c. Реальный уровень выполнения при этом не изменяется, а в смысле порождения процессов псевдоуровни не отличаются от реальных. Обычно псевдоуровни используют для выполнения группы команд.

Если процессом init получен запрос на изменение уровня выполнения, он посылает сигнал - предупреждение SIGTERM всем процессам, которые не должны работать на требуемом уровне выполнения. Затем, выждав 5 секунд, init уничтожает их сигналом SIGKILL.