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) в Справочнике администратора.