Файл / etc / inittab читается сверху вниз?

1395
PeanutsMonkey

Когда процесс init выполняется при загрузке ядра, он читает файл / etc / inittab по принципу «сверху вниз», то есть выполняет каждую строку так, как она отображается в файле.

Если так и основываясь на моем прочтении и понимании, означает ли это, что он входит в задокументированный уровень выполнения и затем запускает процесс sysinit или наоборот?

Например, общие примеры, которые я видел,

id:3:initdefault:  # System initialization. si::sysinit:/etc/rc.d/rc.sysinit 
3

2 ответа на вопрос

5
Andrew M.

Во-первых, обратите внимание, что формат inittabвыглядит так:

Identifier:RunLevel:Action:Command 

Ключевым моментом здесь является runlevel. Учитывая следующий пример кода:

a:3:: b:123:: c:23:: d:123:: e:23:: 

Тогда порядок выполнения различных идентификаторов, начиная с runlevel1, будет следующим:

init 1: b d init 2: c e init 3: a overall: b d c e a 

Как видите, он будет запускать их в том порядке, в котором они перечислены в файле, сгруппированный по уровню запуска ! Также помните, что если идентификатор не находится на указанном уровне выполнения, он будет выдан a, SIGTERMа затем a SIGKILL.

М - Я не совсем понимаю, почему у вас есть несколько уровней запуска для каждого идентификатора. PeanutsMonkey 12 лет назад 0
Уровень запуска говорит: «Запускайте только элементы, указанные для этого уровня запуска». Так, например, если я скажу `init 3` (перейти на уровень выполнения 3), тогда` a` запустится. Если я скажу `init 2` (перейти на уровень выполнения 2), то` a` будет убит, потому что он не настроен для запуска на этом уровне выполнения. Andrew M. 12 лет назад 0
Я понимаю, что когда вы говорите «предметы», вы имеете в виду услуги или процессы. Это правильно? PeanutsMonkey 12 лет назад 0
Извините, да, я имею в виду команды. Andrew M. 12 лет назад 0
Что вы подразумеваете под `если идентификатор не находится на указанном уровне выполнения, ему будет выдан SIGTERM, а затем SIGKILL`? PeanutsMonkey 12 лет назад 0
Когда вы переходите с одного уровня выполнения на другой, если указанная команда не разрешена, ей выдается `SIGTERM` (то есть" Не могли бы вы закончить сейчас? Спасибо! "), Но, если она не отвечает , будет выдан `SIGKILL`, который принудительно отзывает память и пространство процесса. Я считаю, что среднее время составляет ~ 10 секунд, но большинство процессов на этом уровне будут вести себя хорошо. Andrew M. 12 лет назад 1
Когда вы говорите `если указанная команда не разрешена`, что вы имеете в виду? PeanutsMonkey 12 лет назад 0
Думайте о демоне init как о простом определении различных состояний машины. Т.е. «это отправная точка для этой операционной системы» на любом заданном уровне выполнения. [Эта ссылка] (http://www.linfo.org/runlevel_def.html) может дать вам лучшее понимание. Andrew M. 12 лет назад 0
@AndreM, но init 2 должен выполнять b, c, d, e вместо только c, e? Я спрашиваю, потому что я вижу уровень запуска 2 в этих 4 местах. Lunar Mushrooms 10 лет назад 0
@LunarMushrooms: Нет, потому что b и d уже запущены на уровне выполнения 1. Andrew M. 10 лет назад 1
0
Rich Horn

Это не скрипт, который обрабатывается в определенном порядке. Это файл конфигурации, который сообщает системе, какой сценарий / команды нужно выполнить для определенного события или уровня выполнения. Порядок записей в файле не имеет значения, и вы можете иметь несколько сценариев или команд для каждого уровня выполнения.

первая строка, которую вы показываете «id: 3: initdefault:», сообщает системе, что уровень запуска по умолчанию - 3 => многопользовательский режим для большинства разновидностей.

строка "si :: sysinit: ..." указывает системе запускать скрипт /etc/rc.d/rc/sysinit при инициализации системы (запускается при загрузке системы).

если вы используете inittab, вы должны получить список всех опций для файла.

Да, но означает ли это, что сначала он входит в уровень выполнения, а затем выполняет файл /etc/rc.d/rc/sysinit или выполняет сначала этот файл, а затем входит в уровень выполнения, за которым следуют соответствующие сценарии уровня выполнения. PeanutsMonkey 12 лет назад 0

Похожие вопросы