Книга: Linux-сервер своими руками
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 будет перезапущена.
- Права для выполнения резервного копирования
- Упражнения для самостоятельного выполнения
- 3.3.4 init.c
- Initialization and association
- SCTP INIT chunk
- SCTP INIT ACK chunk
- 1.4.1. Кодирование во время выполнения
- Initial loading of extra modules
- 1. APPLICABILITY AND DEFINITIONS
- Программа «Тайный покупатель»
- Программа Victoria
- 3.4.2 RTOS Initialization