Программа
init
В этом параграфе подробно
рассмотрена программа init, поскольку именно с ней связана возможность определения
программ, запускаемых во время загрузки системы. Задача программы init - запуск
новых процессов и повторный запуск завершившихся. Прекрасным примером может
служить набор процессов, обеспечивающих в Linux виртуальные консоли-входа в
систему. В большинстве версий Linux шесть таких консолей загружаются при загрузке
системы. После выхода из окна консоли соответствующий процесс завершается, и
программа init запускает новый. В системе постоянно доступны шесть консольных
окон.
Правила, по которым действует
программа init, записаны в файле /etc/inittab. В Linux Red Hat 7.1 этот файл
выглядит следующим образом.
#
# inittab В этом файле
описана установка процессом iNiT
# системы на определенном
рабочем уровне. #
# Автор: miquel van Smoorenburg,
<miquels@drinkel.nl.mugnet.org>
# Модифицировано для Linux
Red Hat Марком Юингом
# (marc Ewing) и Донни
Барнсом (Dormie barnes)
# Рабочий уровень по умолчанию.
Рабочие уровни Linux Red Hat:
# 0 - останов (Не следует
применять)
# 1 - Однопользовательский
режим
# 2 - Многопользовательский,
без NfS (Аналогичен уровню 3, но без сети)
# 3 - Полный многопользовательский
режим
# 4 - не используется
# 5 - X11
# 6 - перезагрузка (Не
следует применять) #
id:3:initdefault:
# Инициализация системы.
si::sysinit:/etc/re.d/rc.sysinit
10:0:wait:/etc/rc.d/rc 0
11:l:wait:/etc/re.d/rc 1
12:2rwait:/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 rwait: /etc/зге
.d/rc 6
# Программы, запускаемые
на всех уровнях, ud::once:/sbin/update
# Нажатие CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown
-t3 -r now
# Когда источник бесперебойного
питания сообщает об отключении
# питания, до окончательного
прекращения питания остается
# несколько минут.
# Планируем выключение
системы через 2 минуты.
# Конечно, предполагается,
что питание, в том числе источник
# бесперебойного питания,
установлены и работают нормально.
pf::powerfail:/sbin/shutdown
-f -h +2 "Power failure; System Shutting Down"
# Если питание восстановлено
до выключения системы, отменить выключение. pr:12345:powerokwait:/sbin/shutdown
-с "Power Restored; Shutdown Cancelled"
# Запуск gettys на стандартных
рабочих уровнях 1:2345:respawn:/sbin/mingetty ttyl
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
# Запуск xdm на рабочем
уровне 5
# xdm представляет отдельную
службу
х:5:respawn:/usr/bin/X11/xdm
-nodaemon
Необязательно писать такой
файл самостоятельно, но важно понимать то, что в нем написано.
В Linux реализована система
рабочих уровней
(run levels).
Рабочий уровень - это число, соответствующее
текущему состоянию системы. Для разных рабочих уровней\пределены процессы, которые
программа init должна запускать и поддерживать в рабочем состоянии. В первой
записи файла init tab указан рабочий уровень, устанавливаемый по умолчанию во
время загрузки системы. В предыдущем примере это уровень 3, соответствующий
многопользовательскому консольному режиму.
Во втором поле каждой из
последующих записей указано, для каких рабочих уровней эта запись действительна
(поля разделены двоеточиями). Таким образом, для уровня 3 действительны следуг
ющие строки:
13:3:wait:/etc/rc.d/rc 3
1:2345:respawn: /sbin/mingetty ttyl
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
Последние шесть строк указывают
установку шести виртуальных консолей Linux, по первой стартует сценарий запуска
/etc/rc.d/rc 3. Это приводит к запуску всех сценариев, записанных в каталоге
/etc/re.d/rc3 .d. Эти сценарии представляют программы, запускаемые при инициализации
системы - sendmail, службы PCmCiA, демон принтера и crond. Они определяют поведение
системы по умолчанию и, как правило, не редактируются.
Примечание
Рабочие уровни и их сценарии очень сильно различаются в разных дистрибутивах Linux. Многопользовательский консольный режим часто ассоциируется с уровнем, отличным от 3. Кроме того, может быть другим и каталог, хранящий необходимые для этого режима сценарии.
Обратите внимание: последний
сценарий, запускаемый файлом rc3.d - S991ocal. По существу, это ссылка на файл
/etc/re. d/rc. local, в котором можно указать запуск любых программ в процессе
загрузки системы.
В каждой системе Linux может быть своя структура файла /etc/inittab и каталога /etc/ re. d. Однако во всех системах в файле /etc/re. d/rc. local можно указать запуск собственных программ при загрузке системы.