INITTAB(4) INITTAB(4)
НАЗВАНИЕ
inittab - схема процесса init
ОПИСАНИЕ
Файл /etc/inittab содержит сценарий для исполнения
программой init(1M) роли главного диспетчера процессов.
Самым заметным из диспетчеризуемых является процесс
инициализации терминальных линий /etc/getty. Другие
примеры - демоны и shell.
Файл inittab состоит из строк, имеющих следующий формат
(важен и порядок строк):
имя:уровень_выполнения:действие:процесс
Каждая строка оканчивается символом перевода строки,
однако его экранирование посредством символа \ позволя-
ет иметь строки продолжения. В любом случае длина стро-
ки не должна первышать 512 символов. В поле процесс мо-
гут быть включены комментарии согласно правилам
shell'а. Комментарии к строкам, ответственным за запуск
процесса getty(1M), показываются командой who(1). Пред-
полагается, что в этих комментариях содержится информа-
ция о линии, например дислокация соответствующего тер-
минала. На количество строк в файле inittab не наложено
никаких ограничений (только на их длину). Поля строк
имеют следующий смысл:
имя Имя, состоящее из одного или двух символов, должно
однозначно идентифицировать строку.
уровень_выполнения
Это поле определяет уровень выполнения, при кото-
ром строка будет обрабатываться. Уровень выполне-
ния непосредственно соответствует конфигурации
процессов в системе. Каждому процессу, запущенному
init'ом, присваивается уровень или уровни выполне-
ния, при которых тот может существовать. Уровни
выполнения обозначаются цифрами от 0 до 6. Напри-
мер, если система находится на уровне 1, то будут
обработаны только строки, содержащие единицу в по-
ле уровень_выполнения. Когда к init'у обращаются с
запросом о смене уровня выполнения, всем процес-
сам, которые не должны существовать на новом уров-
не, посылается предупреждающий сигнал SIGTERM и
дается 20 секунд на завершение, после чего "лиш-
ние" процессы принудительно терминируются сигналом
SIGKILL. Можно указать несколько допустимых уров-
ней выполнения, если задать ряд цифр из диапазона
от 0 до 6. Если уровень_выполнения вообще не ука-
зан, то считается, что процесс может выполняться
на любом уровне. Существует также три дополнитель-
ных значения, a, b и c, которые могут быть указаны
в данном поле, хотя они и не являются реальными
уровнями выполнения. Строки с такими значениями
уровня выполняются только по запросу процесса te-
linit [см. init(1M)] независимо от текущего уровня
выполнения. Отметим, что уровни a, b, c не могут
быть установлены, а запрос на выполнение помечен-
ных ими процессов не меняет текущий уровень выпол-
нения. Кроме того, подобные процессы не уничтожа-
ются при смене уровня выполнения. Уничтожаются
они, только если соответствующие им строки содер-
жат значение off в поле действие, если эти строки
удаляются из файла /etc/inittab, или если init пе-
реходит в однопользовательский режим.
действие
Ключевое слово в поле действие определяет дисцип-
лину обработки процесса, указанного в данной стро-
ке. Программа init распознает следующие действия:
respawn
Если процесс не существует, то запустить его,
не ждать завершения (продолжать просмотр файла
inittab), после завершения процесса перезапус-
тить его. Если процесс уже существует, ничего
не делать и продолжать просмотр файла inittab.
wait
При переходе на уровень_выполнения, совпадающий
с указанным в строке, запустить процесс и ожи-
дать его завершения. При всех последующих прос-
мотрах файла inittab на том же уровне выполне-
ния игнорировать строку.
once
При переходе на уровень_выполнения, совпадающий
с указанным в строке, запустить процесс и не
ожидать его завершения. Когда процесс завершит-
ся, не перезапускать его. Если уровень будет
изменен в момент, когда программа еще выполня-
ется из-за предыдущей смены уровня выполнения,
то она не перезапускается.
boot
Эта строка будет обработана только один раз во
время чтения init'ом файла inittab при началь-
ной загрузке системы. Программа init запускает
процесс и не ожидает его завершения. Когда про-
цесс завершится, он не перезапускается. Чтобы
это действие выполнялось, поле уровень_выполне-
ния должно быть пустым или соответствовать
уровню выполнения процесса init во время заг-
рузки системы. Спецификацией boot помечают
функции инициализации, следующие за аппаратной
загрузкой системы.
bootwait
Эта строка будет обработана один раз при пере-
ходе init из однопользовательского режима в
многопользовательский после загрузки системы.
(Если действие initdefault соответствует уровню
выполнения 2, то указанный в строке процесс бу-
дет запущен сразу после загрузки системы).
Программа init запускает процесс, дожидается
его завершения и после этого не перезапускает
процесс.
powerfail
Выполнять указанный в строке процесс только при
получении init'ом сигнала об ошибке питания
SIGPWR.
powerwait
Выполнять указанный в строке процесс только при
получении init'ом сигнала об ошибке питания
SIGPWR и продолжать обработку файла inittab
лишь после завершения процесса.
off
Если процесс, ассоциированный с данной строкой,
выполняется, ему посылается предупреждающий
сигнал SIGTERM и дается 20 секунд на заверше-
ние, после чего он принудительно терминируется
сигналом SIGKILL. Если процесс не существует,
строка игнорируется.
ondemand
Это действие является синонимом respawn, но ис-
пользуется только со значениями a, b и c в поле
уровень_выполнения.
initdefault
Строка, в которой указано это действие, исполь-
зуется только при первом обращении к процессу
init. Она определяет уровень выполнения, уста-
навливаемый первоначально: выбирается макси-
мальная из цифр, указанных в поле уровень_вы-
полнения. Если поле уровня пусто, оно рассмат-
ривается как содержащее 0123456 и, следователь-
но, устанавливается уровень выполнения 6. Если
в файле /etc/inittab нет строки с действием
initdefault, то начальное значение уровня вы-
полнения запрашивается у пользователя в момент
загрузки системы.
sysinit
Строки этого типа выполняются перед тем, как
init попытается получить доступ к консоли (то
есть перед выводом приглашения Console login:).
Обычно подобные строки используются только для
инициализации устройств, с которых init может
попытаться запросить уровень выполнения. Коман-
ды из этих строк выполняются с ожиданием завер-
шения.
процесс
Это команда shell'а, которую нужно выполнить. Пе-
ред содержимым поля вставляется exec и передается
shell'у в виде
sh -c 'exec процесс'
Тем самым в поле процесс может стоять любая конст-
рукция, синтаксически корректная с точки зрения
shell'а. Чтобы употребить комментарий, нужно вос-
пользоваться записью ;#комментарий.
СМ. ТАКЖЕ
exec(2), fork(2), open(2), signal(2).
sh(1), who(1) в Справочнике пользователя.
getty(1M), init(1M) в Справочнике администратора.
|