Литмир - Электронная Библиотека

Как процесс определяет, какие службы запускаются или прекращают выполнение? Файл rc или rc.init выполняет функции цикла for при обработке каждого сценария rc.script. Каждый сценарий rc.script запускается в каталоге rc3.d с помощью опции K, и ему передается параметр "stop". Затем аналогичный процесс поддерживается для всех сценариев rc.scripts, которые запускаются с помощью опции s, и им передаются параметры "start". Конечно, подобный процесс поддерживается при обращении к измененному уровню выполнения. Но, в отличие от каталога rc3.d, в данном случае обрабатывается каталог rcN.d, благодаря чему изменяется уровень выполнения N.

Сценарии, находящиеся в каталоге rcN.d, представляют собой только ссылки — фактические сценарии вызываются в другом месте. Эти сценарии располагаются в каталоге под названием /usr/sbin/init.d или /etc/init.d.

В Linux…

/etc/rc.d/init.d

В этом каталоге хранятся несколько сценариев, которые могут запускать иди прекращать функционирование служб. Имена этих сценариев формируются по системе rc.<что он делает>, где rc означает run command или run control. Некоторые системные администраторы называют эти сценарии "реально критическими" (really crucial). Ниже приводится листинг подобного файла.

$ ls

rc.localfs rc.halt rc.reboot rc.syslogd rc.daemon

Общий формат вызова сценариев rc.scripts будет следующим:

rename stop -oстанов службы rc.name start — запуск службы

Необязательными вызовами являются вызовы перезапуска и состояния. Любой другой вызов появляется в ответ на сообщение о применении, в котором содержится методика вызова сценария rc.script. Следует отметить, что эти сценарии можно вызывать вручную.

Итак, вы уже изучили, какие функции выполняет сценарий при вызове. Следующий этап — помещение сценариев в соответствующие каталоги rcN.d. Но сначала рассмотрим систему уровней выполнения.

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

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

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

Таблица 28.1. Функции различных уровней выполнения

Уровень выполнения 0

Прекращает и останавливает целую систему

Уровень выполнения I

Отдельный пользователь или режим администрирования

Уровень выполнения 2

Многопользовательский режим; запускаются некоторые

сетевые службы. Ряд систем использует этот уровень как уровень выполнения в обычном режиме функционирования вместо уровня выполнения 3

Уровень выполнения 3

Обычный режим функционирования, применяется для всех сетевых служб

Уровень выполнения 4

Уровень определенного пользователя; применяйте этот уровень для настройки при выполнении

Уровень выполнения 5

Этот уровень имеет некоторые вариации в виде заданного по умолчанию режима X‑windows; в других случаях этот уровень применяется для перевода системы в режим поддержки

Уровень выполнения 6

Перезагрузка

28.4.2. Формат сценария уровня выполнения

Сценарии в каталогах rcN.d представляют собой все символические ссылки, которые сохраняют дублирование сценариев на нулевом уровне. Формат этих ссылок:

Snn.имя_сценария

или

Кnn.имя_сценария

где

S

Означает запуск процесса

K

Означает уничтожение процесса

nn

Является двузначным числом от 00 до 99, хотя некоторые системы характеризуются трехзначными числами от 000 до 999. При установлении ссылок на различные каталоги сохраняйте то же самое число. Например, если служба запускается в каталоге rc3.d и сценарий называется S45.myscript, то при запуске этой службы в каталоге rc2.d нужно убедиться, что сценарий также называется S45.myscript.

имя сценария

Является названием сценария, зависящим от типа системы. Может находиться в одном из файлов:

/usr/sbin/init.d /etc/rc.d /etc/init.d

Когда процесс init требует вызова сценариев rc.scripts, выполняется процесс уничтожения, начиная от самого большего и завершая самым меньшим числом К, т. е. К23.myscript K12.named. Запуск выполняется в диапазоне от самого меньшего до самого большего значения. Если вы работаете в системе Linux, числа К вызываются от самого большего до самого меньшего числа.

28.4.3. Инсталляция сценария уровня выполнения

Чтобы инсталлировать собственный сценарий rc.script, следует выполнить следующее:

   • написать сценарий, который действительно удовлетворяет стандартам вызова;

   • удостовериться, что сценарий действительно запускает или останавливает необходимую службу;

   • разместить сценарий (в зависимости от системы( в каталоге /etc/init.d, /usr/sbin/init.d или в каталоге /etc/rc.d;

   • cоздать ссылки во всех подходящих каталогах rcN.d, используя соответствующее соглашение о наименовании.

Ниже приводится сценарий, который запускает и прекращает выполнение приложения под названием rc.audit- Эта служба запускается на уровнях выполнения 3, 5 и 4 и уничтожается на уровнях выполнения 6, 2 и 1. При просмотре некоторых записей в каталогах rcN.d число 35 является зарезервированным, поэтому оно применяется в данном случае. Действительно, нет причин прекращать функционирование сценария, поэтому применяется число, которое уже использовалось.

Рассмотрим этот сценарий. Как можно заметить, простая конструкция case выполняет перехват параметров stop и start.

$ pg rc.audit

#!/bin/sh

#rc.audit start | stop

#сценарий запускает или прекращает выполнение

#контролирующего приложения zeega

#

case "$1" in

start)

echo -n "Starting the audit system…."

/apps/audit/audlcp -a -p 12

echo

touch /var/lock/subsys/rc.audit

;;

stop)

echo -n "Stopping the audit system…."

/apps/audit/auddown -k0

echo

rm -f /var/lock/subsys/rc.audit

;;

restart)

$0 stop

$0 start

;;

*)

echo "To call properly..Usage: $0 {start | stop | restart}"

exit 1

;;

esac

exit 0

В Limix…

В некоторых вариантах Linux предполагается, что файл блокировки создается при запуске службы. Если файл блокировки отсутствует, при уничтожении сценариев могут возникнуть трудности.

Опция start вызывает контрольный процесс, который запускает действительную систему контроля, а опция stop вызывает сценарий, останавливающий систему контроля. Конечно, перед помещением сценария в каталог init.d его следует проверить.

$ rc.audit

То call properly..Usage:./rc.audit {start|stop|restart}

$ rc.audit start

Starting the audit system….

Предположим, что сценарий проверен. Запуск и прекращение функционирования службы контроля реализуется без затруднений. Установим связь сценария с нужными каталогами выполнения.

В данной системе каталоги rcN.d помешены в файл /etc/rc.d, а сценарии rc.scripts помещены в файл /etc/rc.d/init.d. Измените пути, если это необходимо.

101
{"b":"273485","o":1}