Linux: Полное руководство
Шрифт:
В списке текущих процессов, который вы видели по команде
Ядро монтирует корневую файловую систему в режиме «только чтение», находит исполняемый файл демона init (в каталоге
Ядро
Конечно, оболочка sh не запустит других процессов, но она предоставит вам интерфейс командной строки, в которой вы сможете выполнить необходимые ремонтные работы.
Процесс init прочитывает свой конфигурационный файл
Уровень выполнения (runlevel) — это такой режим работы системы, в котором разрешается существование только определенной группы процессов. В каждый момент времени система находится на одном из уровней выполнения (на каком именно, можно узнать по команде
Разрешенные на каждом уровне процессы указаны в файле
♦ семь уровней выполнения, обозначаемых номерами с 0 до 6;
♦ особый уровень S или s — однопользовательский;
♦ уровни по требованию (ondemand) А, В и С — фиктивные: при переходе на эти уровни запускаются приписанные к ним процессы, но текущий уровень выполнения не меняется.
Термин «уровень выполнения» унаследован от тех времен, когда система была обязана проходить уровни последовательно, от низшего к высшему при загрузке и обратно при выключении. Сейчас их можно переключать в любом порядке. Для переключения на уровень n нужно от имени суперпользователя ввести команду
Эта команда посылает соответствующий сигнал процессу init (tell init). Ее исполняемый файл представляет собой символическую ссылку на
Запустив все процессы, приписанные к текущему уровню выполнения, init засыпает до получения сигнала о завершении дочернего процесса, отключении питания или требовании переключить уровень. Тогда он просыпается, перечитывает свой конфигурационный файл и, если нужно, выполняет записанные в нем инструкции. Чтобы заставить его перечитать измененный вами
Важно понять, что уровень выполнения — это программная абстракция, аппаратура ни о каких уровнях не знает. Поэтому в разных реализациях Linux (разных дистрибутивах) одному уровню могут соответствовать разные конфигурации системы. Следующие уровни используются в дистрибутивах, основанных на Red Hat:
♦ 0: Останов системы.
♦ 1: Однопользовательский режим. То же, что уровень S.
♦ 2: Многопользовательский режим без поддержки сети.
♦ 3: Полный многопользовательский режим.
♦ 4: Не используется.
♦ 5: Графический режим с X11.
♦ 6: Перезагрузка.
В однопользовательском режиме никакие службы не стартуют: только грузится ядро, монтируется корневая файловая система и запускается командный интерпретатор. На этом уровне не нужен даже файл
Неиспользуемые уровни можно занять
Первая незакомментированная строка этого файла определяет уровень выполнения по умолчанию, то есть тот, в котором стартует система, если в процессе загрузки ядру не указано иначе. Эта строка выглядит как
Обычно в качестве уровня по умолчанию выбирают 3 (полнофункциональный многопользовательский текстовый режим) или графический 5 (запускается X Window и выдается графическое приглашение для входа в систему). Если оставить поле уровня пустым, то init переспросит значение в процессе загрузки. Если указать в поле уровня несколько значений, то сработает наибольшее. Уровни 0 (останов) и 6 (перезагрузка) указывать нельзя.
Следующие строки имеют формат:
♦ Идентификатор — это уникальная последовательность из четырех символов (в старых дистрибутивах — двух).
♦ Уровни_выполнения: перечень уровней выполнения (номера без каких-либо разделителей), для которых будет выполнено указанное действие. Например, значение 2345 требует выполнить действие на уровнях 2, 3, 4 и 5. Здесь можно указывать также уровни по требованию (ondemand) А, В и С.
♦ Действие: одно из действий, перечисленных в таблице 9.1.
♦ Запускаемый_процесс: процесс, над которым производится действие. Это может быть исполняемый файл или сценарий.
Действия над процессами, задаваемые а файле /etc/inittab Таблица 9.1
Действие | Описание |
---|---|
respawn | В случае завершения процесс будет перезапущен |
wait | Процесс будет запущен при переключении на любой из указанных уровней, и init будет ждать его завершения |
once | При переключении на любой из указанных уровней процесс будет запущен только однажды |
boot | Процесс будет запущен во время загрузки системы. Поле «уровни_выполнения» игнорируется |
bootwait | То же, что и boot, но init ждет завершения процесса |
off | Не выполняет никаких действий |
ondemand | Процесс выполняется в режиме по требованию, то есть, он будет запущен при переключении на уровни a, b или с |
initdefault | Определяет уровень выполнения по умолчанию |
sysinit | Процесс запускается во время загрузки системы до любых процессов, стартующих через boot или bootwait |
powerwait | Процесс будет запущен, когда исчезнет напряжение в сети. Естественно, для корректной работы этой записи нужен источник бесперебойного питания, от которого система и получит уведомление об исчезновении напряжения; init будет ждать завершения этого процесса |
powerfail | То же, что и powerwait, но init не будет ждать завершения процесса |
powerokwait | Процесс запускается по получении init сигнала о восстановлении питания |
powerfailnow | Процесс запускается, когда источник бесперебойного питания подает сигнал о том. что его батареи почти разряжены |
ctrlaltdel | Процесс запускается при получении init сигнала INT. посланного нажатием комбинации клавиш Ctrl+Alt+Del. Обычно это процесс перезагрузки, выключения или перехода в однопользовательский режим. |
kbrequest | Процесс запускается при получении init сигнала, посланного нажатием «специальной» комбинации клавиш. Назначить клавишам специальное значение можно с помощью утилит из пакета kbd |