5.5. Уровни выполнения.Программа init

5.5. Уровни выполнения.Программа init

ОС Linux имеет шесть уровней выполнения, а также три уровня выполнения по требованию.

Программа init переключает систему в нужный режим работы (на нужный уровень выполнения), и ее имеет право использовать только пользователь root. Для переключения на уровень n достаточно ввести команду:

# init n

Иногда, при небольшом изменении файла /etc/inittab, нужно заново перечитать таблицу инициализации (inittab). Для этого воспользуйтесь командой:

init q

Помните, что вы в любой момент можете изменить файл /etc/inittab и перечитать его заново командой

init q.

Для перехода на первый уровень выполнения можно также использовать параметр s программы

init: init s

Описание уровней приведено в табл. 5.4.

Уровни выполнения Таблица 5.4

Уровень Описание
0 Останов системы
1 Административный (однопользовательский) режим. Обычно используется пользователем root для восстановления системы после сбоя
2 Многопользовательский режим, но без использования сети
3 Многопользовательский режим, допускается работа в сети
4 Не используется
5 Многопользовательский режим. Поддержка сети. Автоматический запуск системы X Window
6 Перезагрузка системы

Файл /etc/inittab описывает, какие процессы должны запускаться во время загрузки и на протяжении нормальной работы системы. Программа init переключает уровни выполнения системы. Корректными номерами уровней системы являются 0…6, а также А, В и С.

Каждая строка файла /etc/inittab должна быть записана в формате:

id:уровни_выполнения:действие:процесс

Поле «Id» (идентификатор) — уникальная последовательность из четырех символов (в старых дистрибутивах длина имени идентификатора ограничена двумя символами).

Поле «уровни выполнения» — перечень уровней выполнения, для которых будет выполнено указанное действие.

Поле «действие» — задает действие, которое будет выполнено.

Поле «процесс» — определяет процесс, который будет выполнен.

В качестве значений поля «уровни_выполнения» могут быть указаны номера уровней выполнения без каких-либо разделителей. Например, значение данного поля 1235 означает, что указанное действие будет применено к уровням 1, 2, 3 и 5. В качестве дополнительных уровней, которые называются уровнями по требованию (ondemand), могут быть указаны уровни А, В и С.

В качестве действия может быть указано одно из действий, описанных в табл. 5.5

Действия над процессами, задаваемые в файле /etc/inittab Таблица 5.5

Действие Описание
wait Процесс будет запущен на одном из указанных уровней выполнения, и программа init будет ждать его завершения
respawn Процесс будет перезапущен после его завершения
once Процесс будет запущен всего один раз на одном из указанных уровней выполнения
boot Процесс будет запущен во время загрузки системы. Поле «уровни_выполнения» будет проигнорировано
bootwait То же, что и boot, но программа init будет ждать завершения процесса
off Не выполняет никаких действий
ondemand Процесс будет запущен в режиме по требованию, то есть он будет выполнен, когда будет вызван один из уровней по требованию (А, В, С)
initdefault Определяет уровень выполнения по умолчанию. Если он не указан, при загрузке программа init попросит вас ввести уровень выполнения
sysinit Процесс будет запущен во время загрузки, но перед выполнением процессов, которые запускаются с помощью действия boot или bootwait
powerwait Процесс будет запущен, когда исчезнет напряжение в сети. Естественно, для корректной работы этой записи нужен источник бесперебойного питания, от которого система и получит уведомление об исчезновении напряжения. Программа init будет ждать завершения этого процесса
powerfail То же, что и powerwait, но программа init не будет ждать завершения процесса
powerokwait Процесс будет запущен сразу после того, как программа init получит сведения о том, что питание восстановлено
ctrlaltdel С помощью этого действия можно установить реакцию системы на нажатие комбинации клавиш Ctrl+Alt+Del

Теперь рассмотрим листинг обычного файла /etc/inittab (см. листинг 5.2).

Листинг 5.2. Файл /etc/inittab

id:5:initdefault:

si::sysinit:/etc/rc.d/rc.sysinit

10:0:wait:/etc/re.d/rc 0

11:1:wait:/etc/re.d/rc 1

12:2:wait:/etc/re.d/rc 2

13:3:wait:/etc/re.d/rc 3

14:4:wait:/etc/re.d/rc 4

15:5:wait:/etc/re.d/rc 5

16:6:wait:/etc/re.d/rc 6

# Things to run in every runlevel.

ud::once:/sbin/update

# Trap CTRL-ALT-DELETE

ca::ctrlaltdel:/sbin/shutdown –t3 –r now

pf::powerfail:/sbin/shutdown –f –h +2 "Power Failure; System Shutting Down"

pr:12345:powerokwait:/sbin/shutdown –c "Power Restored; Shutdown Cancelled"

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

# Run xdm in runlevel 5

# xdm is now a separate service

x:5:respawn:/etc/X11/prefdm –nodaemon

Рассмотрим подробно приведенный пример. Самая первая строка определяет уровень выполнения по умолчанию. Очень рекомендую вам установить это значение. Во-первых, вводить уровень загрузки каждый раз при запуске системы не очень удобно. Во-вторых, если не установлен уровень выполнения по умолчанию, система не сможет запускаться автоматически: при загрузке она будет ждать ввода номера уровня выполнения. Для загрузки системы подойдут два уровня: или 3, или 5. Я рекомендую использовать третий уровень выполнения, использовать уровень выполнения 5 нужно только в том случае, если вы хотите, чтобы система X Window запускалась автоматически при старте системы.

Затем указываются программы, которые будут выполнены во время системной инициализации (sysinit). В нашем случае будет запушен сценарий загрузки системы /etc/re.d/rc.sysinit.

Далее следуют описания действий для каждого из уровней выполнения. Например, для уровня выполнения номер 5 будет запущен сценарий /etc/re.d/rc с параметром 5. Программа init будет ждать завершения процесса /etc/re.d/rc.

Программа /sbin/update будет запускаться на каждом из уровней выполнения один раз.

Реакция на нажатие комбинаций клавиш Ctrl+Alt+Del устанавливается с помощью действия ctrlaltdel. Будет запущена программа shutdown для немедленной (now) перезагрузки (-r) системы. Задержка перед переключением на шестой уровень (перезагрузка) составит три секунды (-t3).

Реакция на перебои с питанием устанавливается с помощью действий powerfail и powerokwait. В качестве реакции на событие powerfail будет запущена программа shutdown для останова системы (-h). Опция –f указывает, что при перезагрузке будет пропущена проверка файловой системы с помощью fsck. Задержка перед переключением на шестой уровень выполнения составит две минуты (+2). На всех активных терминалах пользователи увидят сообщение «Power Failure; System Shutting Down». Если в течение двух минут питание будет восстановлено, запустится программа shutdown для отмены останова системы (-с). На терминалах пользователей будет отображено сообщение «Power Restored; Shutdown Cancelled».

Наглядным примером для действия respawn может послужить система X Window. Можете провести такой эксперимент: перейдите на уровень выполнения 5: init 5

Если уровень 5 уже активен, этого делать, естественно, не нужно. Находясь в системе X Window, нажмите Ctrl+Alt+Backspace — эта комбинация клавиш используется для экстренного останова системы X Window. После останова система X Window будет перезапущена.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

8.3.4. System V Init Editor ksysv

Из книги ArchiCAD 11 автора Днепров Александр Г

8.3.4. System V Init Editor ksysv В оболочке KDE имеется очень удобная утилита для управления запускаемыми на разных уровнях службами. Она называется ksysv или System V Init Editor и запускать ее надо от имени суперпользователя, иначе она будет только показывать существующую конфигурацию служб, но


Уровни

Из книги Очень хороший самоучитель пользователя компьютером. Как самому устранить 90% неисправностей в компьютере и увеличить его возможности автора Колисниченко Денис Николаевич

Уровни Уровень – это горизонтальная отметка, относительно которой производятся измерения всех возвышений, то есть расположения объектов по вертикали.Вы уже знакомы с понятием нулевого уровня проекта, относительно которого измеряются возвышения всех объектов. Однако


Ошибки 0x000000ED и 0x0000007B: нужно редактировать boot.init

Из книги Основы AS/400 автора Солтис Фрэнк

Ошибки 0x000000ED и 0x0000007B: нужно редактировать boot.init Записи в файле boot.ini (конфигурационный файл загрузчика NTLDR) не соответствуют действительности, и загрузчик не может найти загрузочный том. Проблема может быть вызвана переразбиением жесткого диска, когда были добавлены


Уровни защиты

Из книги Самоучитель работы на компьютере автора Колисниченко Денис Николаевич

Уровни защиты AS/400 предназначены для широкого применения в различных областях человеческой деятельности. Соответственно, и требования к их защищенности варьируются от уровня ее полного отсутствия до уровня защиты, сертифицированной правительством. Задавая


Программа Nero Express Лучшая программа для записи дисков

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

Программа Nero Express Лучшая программа для записи дисков Записывать диски средствами Windows неинтересно. Во-первых, скучно, а во-вторых, вам недоступны какие-либо настройки записи, вы даже не можете указать скорость, не говоря уже о выборе формата диска, методе записи. Вот


4.20.1 Уровни в X.25

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

4.20.1 Уровни в X.25 Протокол X.25 имеет три уровня. Уровень связи данных называется балансированным протоколом доступа к связи (Link Access Protocol Balanced — LAPB), а сетевой уровень — уровнем пакетов X.25 (X.25 Packet Level). Владеющий оборудованием DTE пользователь устанавливает связь по X.25 с


16.6. Сценарий запуска сервера Apache /etc/init.d/httpd

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

16.6. Сценарий запуска сервера Apache /etc/init.d/httpd Стандартный сценарий запуска веб-сервера Apache устанавливается из того же пакета, что и сам сервер, В версии Apache 2.0 можно вызывать сценарий запуска со следующими параметрами:? start — запуск сервера;? stop — завершение работы


3.2.3. init

Из книги Linux и UNIX: программирование в shell. Руководство разработчика. автора Тейнсли Дэвид

3.2.3. init С помощью LILO запускается программа загрузки ОС, которая настраивает все необходимое оборудование, загружает драйверы и монтирует жесткие диски. По окончании этого процесса с винчестера запускается программа init, которая завершает загрузку.У программы init, как и у


28.4.1. Различные уровни выполнения

Из книги UNIX — универсальная среда программирования автора Пайк Роб

28.4.1. Различные уровни выполнения Существует семь уровней выполнения (табл. 28.1). Различные системы имеют на некоторых уровнях небольшие отличия.Прежде чем размещать сценарий на различных уровнях выполнения, уточните, на каких уровнях эта служба должна запускаться или


3.3.4 init.c

Из книги автора

3.3.4 init.c #include "hoc.h"#include "y.tab.h"#include <math.h>extern double Log(), Log10(), Exp(), Sqrt(), integer();static struct { /* Constants */ char *name; double eval;} consts[] = { "PI",    3.14159265358979323846, "E",     2.71828182845904523536, "GAMMA", 0.57721566490153286060, /* Euler */ "DEG",  57.29577951308232087680, /* deg/radian */ "PHI",   1.61803398874989484820, /* golden ratio */ 0, 0};static struct { /* Built-ins */ char *name; double (*func)();}


3.4.3 init.c

Из книги автора

3.4.3 init.c #include "hoc.h"#include "y.tab.h"#include <math.h>extern double Log(), Log10(), Exp(), Sqrt(), integer();static struct { /* Constants */ char *name; double eval;} consts [] = { "PI",    3.14159265358979323846, "E",     2.71828182845904523536, "GAMMA", 0.57721566490153286060, /* Euler */ "DEG",  57.29577951308232087680, /* deg/radian */ "PHI",   1.61803398874989484820, /* golden ratio */ 0,       0};static struct { /* Built-ins */ char


3.5.4 init.c

Из книги автора

3.5.4 init.c #include "hoc.h"#include "y.tab.h"#include <math.h>extern double Log(), Log10(), Exp(), Sqrt(), integer();static struct { /* Constants */ char *name; double eval;} consts[] = { "PI",    3.14159265358979323846, "E",     2.71828182845904523536, "GAMMA", 0.57721566490153286060, /* Euler */ "DEG",  57.29577951308232087680, /* deg/radian */ "PHI",   1.61803398874989484820, /* golden ratio */ 0,       0};static struct { /* Built-ins */ char *name; double


3.6.6 init.c

Из книги автора

3.6.6 init.c #include "hoc.h"#include "y.tab.h"#include <math.h>extern double Log(), Log10(), Sqrt(), Exp(), integer();static struct { /* Keywords */ char *name; int kval;} keywords[] = { "if",    IF, "else",  ELSE, "while", WHILE, "print", PRINT, 0,       0,};static struct { /* Constants */ char *name; double eval;} consts[] = { "PI",    3.14159265358979323846, "E",     2.71828182845904523536, "GAMMA", 0.57721566490153286060, /* Euler */ "DEG", 


3.7.15 init.c

Из книги автора

3.7.15 init.c #include "hoc.h"#include "y.tab.h"#include <math.h>extern double Log(), Log10(), Sqrt(), Exp(), integer();static struct { /* Keywords */ char *name; int kval;} keywords[] = { "proc",   PROC, "func",   FUNC, "return", RETURN, "if",     IF, "else",   ELSE, "while",  WHILE, "print",  PRINT, "read",   READ, 0,        0,};static struct { /* Constants */ char *name; double eval;} consts[] = { "PI",    3.14159265358979323846, "E",