init (~)

Utility аватар

ИМЯ
init - управление инициализации процессов
СИНТАКСИС
init
ОПИСАНИЕ
Программа init есть последний этап процесса загрузки (первым загружается ядро и инициализирует все устройства). Как правило, она начинает многопользовательские операции.
В следующей таблице описывается состояние машины использующей init:
1. Одна оболочка пользователя. init может быть передано -s во время загрузки системы не позволяет быть многопользовательской, вместо этого выполняет одну оболочку пользователя без запуска обычных демонов. Если ядро находится в безопасном режиме, init понизит его уровень безопасности до 0 (небезопасный режим). В этом случае пассивная система продолжает работать в дальнейшем может перейти в состояние 2 (многопользовательской) при выходе однопользовательской оболочки (используя ^D).
2. Многопользовательская загрузка (операция по умолчанию). Выполняет /etc/rc (см. rc(8)). Если изначально это состояние, вход (в отличии от входа в состоянии 1), будет вызвано /etc/rc с его первый раз установленным аргументом «autoboot». Если /etc/rc завершается (ненулевая) ошибкой кода, начните операцию однопользовательским входом в оболочку консоли супер-пользователя, перейдя в состояние 1 (однопользовательский). В противном случае переходите в состояние 3.
Если значение узла sysctl «init.root» не совпадает с точкой /, процеcc /etc/rc будет запущен chroot(2) с той же ошибкой, указанной sysctl выше.
Если администратор не установил -1 уровень безопасность это предпосылка, что ядро не должно работать в многопользовательском, безопасном режиме, сценарий /etc/rc не установит уровень безопасности выше, чем уровень 1, тогда init переведёт ядро в режим защиты уровня 1. См . rc.conf(5) и secmodel_securelevel(9).
3. Настройка ttys, как указано в ttys(5). См. Ниже для дополнительной информации. По завершении продолжает работать в режиме 4. Если бы мы сделали каждый getty(8) в изолированный режим 2. процесс будет работать в том же пути chroot(2), а у 2 (т. е. Значение sysctl «init.root» не перечитывает).
4. Многопользовательские операции. В зависимости от полученного сигнала, изменяемого в зависимости от состояния; на SIGTERM. Перейдите на состояние 7; на SIGHUP, перейдите на состояние 5, на SIGSTP, перейдите в состояние 6.
5. Режим очистки; перепрочтите ttys(5), выключая процессы в строках, которые необходимо сейчас «off», а процессы которые понадобятся «on». После завершения перейдите в состояние 4.
6. «Скучный» режим», никакой новой сессии. Сигналы в соответствии с режимом 4.
7. Режим выключения. Отправить SIGHUP для всех контролируемых процессов, собираемых процессов в течении 30 секунд, затем переход в режим 1 (однопользовательское); предупреждение, если не все процессы убиты.
Если «console» входа в файл ttys(5) отмечена «insecure», тогда init будет требовать, что бы пароль суперпользователя был введён для работы системы в однопользовательской оболочке. Пропускается проверка пароля, если «console» помечена как «secure».
Следует отметить, что во время init имеет возможность запуска многопользовтельских операций внутри среды chroot(2), сам процесс init всегда будет запущен в «original root directory». Это также означает, что однопользовательский режим всегда запускается в подлинном root, давая возможность многопользовательской сессии в разных каталогах системы root на время. Sysctl «init.root» производится init при загрузке и восстанавливается в любое время когда обнаружена необходимость. Тип строк метки способно указывать полный путь, доступ только суперпльзователю (если явно не уничтожена и воссоздана с различными указаниями).
В многопользовательских операциях, init поддерживает процессы для порта терминала найденого в файле ttys(5). Init читает файл и выполняет команды находящиеся во второй области. Эта команда, как правило, getty(8) она открывает и инициализирует строки терминала, запускает программу login(1). Программа login(1), при деёствительном входе пользователя в систему, запускает оболочку пользователя. При этом оболочка умирает, либо потому, что произошёл выход пользователя аварийным завершение (сигнал), программе init посылается, удаление пользователя из файлов utmp(5) и utmpx(5) текущего пользователя и записи выхода в файлы wtmp(5) и wtmpx(5). Цикл, возобновляется работа init новыми строками getty(8).
Строка статус (включение, выключение, безопасный, getty или окно информации) может быть изменено в фале ttys(5) без перезагрузки, отправьте сигнал SIGHUP init с помощью команды «kill -s HUP 1». Это ссылка описанного в таблице выше как состояние 5. о получение этого сигнала, init перечитывает файл ttys(5). Когда строка отключена в ttys(5), init пошлёт сигнал SIGHUP управления процессами сеанса, связанных с строкой.Для любой строкикоторая ранее была отключена в файле ttys(5), и на настояще время включены, init выполнит новые getty(8) запуская новый login. Если getty или поле в строке окна изменены, чтобы они вступили в силув конце текущей сессии login (например, следующее время init запустит процесс в строке). Если строка закомментирована или удалена в ttys(5), init не будет ничего вообще, для этой строки. Тем не менее, будет сообщать, что связанные строки в файле ttys(5) и строки в файле utmp(5) вне синхронизации, так что эта практика не рекомендована.
Init прекращает многопользовательскую работу и возобновление однопользовательского режима, если отправлен сигнал прекращения (TERM), например, «kill -s TERM 1».. Если есть неурегулированные процессы которые зашли в тупик (из-за аппаратного или программного сбоя), init не будет всех их ждать, чтобы умереть (которые могут принять всегда), но после тайм-аута после 30 секунд, печать сообщения предупреждения.
Init прекратить создание новых getty(8)и позволит системе постепенно отмирать, если её направлено конечный сигнал остановки (TSTP), т. е. «kill -s TSTP 1». После зависания возобновится деятельность в полном многопользовательском объёме, или прекратит работу одной оболочки пользователя. Этот крюк используется reboot(8) и halt(8).
Роль init является настолько критичной, что если она умрёт, система будет перезагружена автоматически. Если во время загрузки, процесс init не может быть расположен, или выходить во время его инициализации, система будет паниковать с сообщения «panic: init died (signal %d, exit %d)».
Если /dev/console не существует, init будет cd d /dev и запустит «MAKEDEV -MM init». Makedev(8) будет использовать mount_tmpfs(8) или mount_mfs(8) для создания ФС памяти монтируемой в /dev, которая считает содержание стандартных устройств необходимыми для загрузки системы.
ФАЙЛЫ
/dev/console - устройство консоли системы
/dev/tty* - обнаруживаемый порт терминала в ttys(5).
/var/run/utmp{,x}- запись текущего пользоватля в системе
/var/log/wtmp{,x}- запись всех входов выходов
/etc/ttys - информационный файл инициализации терминала
/etc/rcзапуск - системных команд
ДИАГНОСТИКА
getty repeating too quickly on port %s, sleeping — процесс, запущенный для обслуживания строк выходакаждый раз быстро запускается. Это часто вызвано громкой или шумной строкой. Init will sleep for 10 seconds, then continue trying to start the process.
some processes would not die; ps axl advised. Процесс повис и не может быть убит. Когда система выключается. Это условие обычно вызвано процессом, который застрял в драйвере устройства из-за условия стойкости ошибок устройства.
ТАК ЖЕ
config(1), kill(1), login(1), sh(1), options(4), ttys(5), getty(8), halt(8), MAKEDEV(8), MAKEDEV.local(8), mount_mfs(8), mount_tmpfs(8), rc(8), reboot(8), rescue(8), shutdown(8), sysctl(8), secmodel_bsd44(9), secmodel_securelevel(9)
ИСТОРИЯ
Команда init появилась в 6 версии AT&T UNIX.

Прикрепленный файлРазмер
init.odt31.9 кб