Запуск и остановка операционной системы UNIX (6 глава дипломной работы), страница 2

            Затем выполняется файл /etc/rc.single, который монтирует файловые системы, подготавливает к работе разделяемые библиотеки, устанавливает время в соответствии с часовым поясом и производит еще ряд мелких настроек.

            Основную нагрузку по запуску и конфигурированию подсистем, демонов и сервисов несет следующий файл - /etc/rc.

            Последним обрабатывается сценарий /etc/rc.local. Здесь рекомендуется размещать команды по запуску прикладных процессов и установке пользовательских настроек.

Сценарии инициализации в UNIX System V.

            В System V вводится понятие уровень исполнения (runlevel) – некоторый стандартный режим функционирования системы, который характеризуется набором запущенных в этом режиме системных и прикладных процессов. Уровни исполнения носят номера от 0 до 6. Назначение каждого из них  несколько отличается в разных реализациях System V, однако в целом имеет общий характер (таблица 6.1).

Таблица 6.1 – Уровни исполнения System V

Уровень

Назначение

0

Система остановлена

1

Однопользовательский режим (иногда обозначается как уровень S или s)

2

Стандартный многопользовательский режим (в некоторых системах – стандартный режим без поддержки сети)

3

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

4

Зарезервировано

5

Зарезервировано (в некоторых системах – многопользовательский режим с запуском графической среды X Windows)

6

Перезагрузка системы

При запуске процесс init считывает с диска свой файл конфигурации - /etc/inittab. Этот текстовый файл содержит точное определение уровней исполнения, а также номер уровня, на который система переходит автоматически после загрузки – строка initdefault. Здесь же указывается, какие сценарии следует запустить для выполнения общесисистемных настроек (аналогично BSD).

            Отличия от BSD проявляются при переходе между уровнями исполнения. Для каждого уровня создается каталог, содержащий сценарии, запускаемые на данном уровне; в стандарте System V эти каталоги носят названия /etc/rc0.d, /etc/rc1.d, …, /etc/rc6.d.

            Рассмотрим сокращенный пример содержимого одного из таких каталогов:

#ls /etc/rc3.d

K20rstatd

K55routed

K90xfs

. . .

S10network

S50inet

S55named

S75keytable

. . .

#

Сами сценарии пишутся таким образом, чтобы при запуске с параметром командной строки «start» активизировать соответствующий сервис, а при запуске с параметром «stop» - производить корректное завершение работы сервиса или подсистемы. Имя сценария начинается с символа «S» или «K» (от англ. start – старт и kill – уничтожить, завершить) и двузначного числа; остальная часть имени идентифицирует сервис, за который отвечает данный сценарий. Когда процесс init производит переход системы на данный уровень, сценарии «K» запускаются с параметром «stop», затем сценарии «S» - с параметром «start». Числа задают порядок запуска и определяются из смысла сервиса – так, запуск сетевых служб должен производиться после активизации сети и соответственно иметь большее значение числа.

            В примере при переходе на 3-й уровень производится завершение сервисов rstatd, routed, xfs и др., и запускаются сервисы nrtwork, inet, named, keytable и др.

            Обычно сами файлы сценариев располагаются в каталоге /etc/init.d, а в каталогах отдельных уровней создаются символические ссылки на эти файлы. В примере ссылка /etc/rc3.d/K90xfs указывает на сценарий /etc/init.d/xfs; ссылка /etc/rc3.d/S50inet – на /etc/init.d/inet и т.д. На некотором другом уровне исполнения могут существовать ссылки на те же файлы с именами S80xfs и K45inet, выполняющие противоположное действие.

Таким образом, получается гибкий механизм управления набором работающих в каждом режиме сервисов. При необходимости обеспечить запуск какого-либо сервиса на определенном уровне администратор создает соответствующую ссылку на сценарий из /etc/init.d, отключение запуска производится удалением соответствующей ссылки. Сами сценарии обычно поставляются в составе соответствующих программных пакетов и вносятся в каталог /etc/init.d в процессе установки программ.

Переход между уровнями исполнения может быть выполнен администратором при помощи команды

init <уровень> (в некоторых системах - telinit <уровень>)

Примеры

init 3 – переход в основной режим (обычно из однопользовательского)

init 6 – перезагрузка

init 0 – остановка системы

Сценарии формата System V дают возможность и ручного запуска, перезапуска и остановки сервисов. Для этого из командной строки следует запустить соответствующий сценарий с параметром «stop» или «start»; последовательность «stop-start»-команд означает корректный перезапуск сервиса (напр., после редактирования файлов конфигурации):

 /etc/init.d/inet stop     - ручная остановка суперсервиса inetd

 /etc/init.d/xfs stop

 /etc/init.d/xfs start   - перезапуск сервера шрифтов среды XWindows

В некоторых вариантах ОС Linux соответствующие каталоги уровней исполнения System V, а также общесистемные сценарии инициализации вынесены из /etc и имеют имена /etc/rc.d/init.d, /etc/rc.d/rc0.d, … /etc/rc.d/rc6.d.

6.3  Остановка и перезагрузка системы

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

Все версии UNIX содержат команду shutdown, которая служит для остановки системы. В System V UNIX можно также использовать команды init 6 и init 0 (см. раздел 6.2). Многие версии UNIX производят корректную перезагрузку при нажатии на системной консоли сочетания клавиш <Alt><Ctrl><Del> (или аналогичного). Выключение питания при этом может быть произведено в момент аппаратной перезагрузки, перед стартом UNIX.

Перед остановкой системы следует предварительно оповестить всех работающих с сервером пользователей. Для этого, в частности, может использоваться стандартная утилита передачи сообщений – write.