SliTaz Man Pages

Community Doc Forum Pro Shop Bugs Hg Cook

init.

Section: Misc. Reference Manual Pages ()
Updated: MOPS 1.0
Index Return to Main Contents

НАЗВАНИЕ

init, telinit - Создают процесс, контролирующий инициализацию

СИНТАКСИС

/sbin/init [ -a ] [ -s ] [ -b ] [ -z xxx ] [ 0123456Ss ]
/sbin/telinit [ -t sec ] [ 0123456sSQqabcUu ]

ОПИСАНИЕ

Init это родитель всех процессов. Init является первой программой, выполняемой ядром. Когда она запускается, init считывает конфигурационный файл, называемый /etc/inittab (см. inittab(5)). Этот файл определяет, как ведет себя init во время событий запуска и выключения сервера. Обычно он заставляет init запускать getty каждый раз когда залогинивается пользователь.

УРОВНИ ВЫПОЛНЕНИЯ

Runlevel является конфигурационной программой, которая определяет каким группам процессов можно существовать. Процессы порожденные программой initдля каждого из этих уровней определяются в файле /etc/inittab. Может быть девять уровней выполнения: 0-6 и S or s. Уровни выполнения можно изменять в конфигурационной строке init.

0       Остановка - завершение работы системы   
1       Один пользователь-используется для настройки системы
в минимальной конфигурации, подходящей для одного пользователя 2       Не используется
3       Многопользовательский режим - применяется для настройки системы
в конфигурации, которая поддерживает несколько пользователей 4       Не используется
5       Используется для запуска системы X Windows и программы xdm
6       Перезагрузка системы
S или s      Используется для внутренних операций сценариями, которые
выполняются на уровне 1

НАЧАЛЬНАЯ ЗАГРУЗКА

На последнем шаге загрузки ядра init просматривает файл /etc/inittab и ищет тип initdefault. Initdefault определяет начальную загрузку системы. Если этой строки нет (или вообще нет файла /etc/inittab), то уровень выполнения должен быть введен с консоли.

Уровень выполнения S или s приводит систему к использованию однопользовательского режима и не нуждается в файле /etc/initttab.

При вводе многопользовательского режима впервые , init выполняет действие boot (процесс выполняется во время загрузки системы, init будет игнорировать поле уровня выполнения) и действие bootwait (init будет ждать окончания процесса), чтобы позволить файловой системе смонтироваться прежде чем пользователь сможет войти в нее. Затем запускается уровень запуска.

Когда запускается новый процесс, init вначале проверяет существует ли файл /etc/initscript. Если существует, он использует для запуска процессов.

Каждый раз когда завершаются порожденные процессы, init регистрирует этот факт и причину

ИЗМЕНЕНИЕ УРОВНЕЙ ВЫПОЛНЕНИЯ

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


 Если init запущен не в однопользовательском режиме и получает сигнал повреждения питания (SIGPWR), он читает файл /etc/powerstatus и затем запускает команду в зависимости от содержимого этого файла:

F(AIL)
Повреждение питания, UPS обеспечивает питание. Выполняется powerwait и powerfail.
O(K)
Питание восстановлено. Выполняется powerokwait.
L(OW)
Нет питания и UPS не заряжено. Выполняется powerfailnow.

Если /etc/powerstatus не существует или содержит в себе что-либо еще кроме букв F, O или L, init будет вести себя так, как будто он прочитал только букву F.

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

TELINIT

/sbin/telinit взаимосвязано с /sbin/init. Он берет односимвольный аргумент и посылает сигнал init на выполнение соответствуещего действия. Существуют следующие аргументы: telinit:
0,1,2,3,4,5 или 6
переключают init в соответствующий уровень выполнения.
a,b,c
говорят init обрабатывать только тот файл /etc/inittab, который содержит уровни выполнения a,b или c.
Q или q
повторная проверка файла /etc/inittab.
S или s
переключают init в однопользовательский режим.
U или u
перезапускают init (сохраняя состояние). Повторная проверка файла /etc/inittab не происходит. Уровень выполнения должен быть один из Ss12345, иначе запрос будет проигнорирован.

telinit также может сообщить init как долго он должен ждать между посылкой сигналов SIGTERM и SIGKILL. По умолчанию это 5 секунд, но это можно изменить опцией -t sec.

telinit может активизироваться только пользователем имеющим подходящие права.

Init делает бинарную проверку init это или telinit, путем просмотра идентификатора. У init идентификатор всегда равен 1. Отсюда следует,что init можно использовать вместо telinit.

ПЕРЕМЕННЫЕ СРЕДЫ

Init устанавливает следующие переменные среды для своих потомков:
PATH
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin
INIT_VERSION
Полезно определять выполняется ли скрипт непосредственно от init.
RUNLEVEL
Текущий уровень выполнения системы.
PREVLEVEL
Предыдущий уровень выполнения (необходим при переустановки уровня).
CONSOLE
Системная консоль. Наследуется от ядра; однако если она не определена init установит эту переменную в /dev/console.

BOOTFLAGS

Существует возможность передать init несколько флажков:

-s, S, single

1-5

-b, emergency

-a, auto

СИГНАЛЫ

Init реагирует на несколько сигналов:
SIGHUP
Init ищет файл /etc/initrunlvl и /var/log/initrunlvl. Если один из этих файлов существует и содержит уровень выполнения , init переключается в новый уровень. В обратном случает (если файлы не существуют) init ведет себя как команда telinit q.

SIGUSR1
При получении этого сигнала init закрывает и открывает заново свой контрольный канал fifo, /dev/initctl. Полезно, если удален /dev.
SIGINT
Сигнал отправляется при нажатии клавиш CTRL-ALT-DEL.
SIGWINCH
Сигнал отправляется при нажатии клавиши на клавиатуре.

ФАЙЛЫ


/etc/inittab
/etc/initscript
/dev/console
/etc/ioctl.save
/var/run/utmp
/var/log/wtmp
/dev/initctl

СМ. ТАКЖЕ

getty(1), login(1), sh(1), runlevel(8), shutdown(8), kill(1), inittab(5), initscript(5), utmp(5)

Index

НАЗВАНИЕ
СИНТАКСИС
ОПИСАНИЕ
УРОВНИ ВЫПОЛНЕНИЯ
НАЧАЛЬНАЯ ЗАГРУЗКА
ИЗМЕНЕНИЕ УРОВНЕЙ ВЫПОЛНЕНИЯ
TELINIT
ПЕРЕМЕННЫЕ СРЕДЫ
BOOTFLAGS
СИГНАЛЫ
ФАЙЛЫ
СМ. ТАКЖЕ