Рівень виконання

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Рівень виконання (runlevel) - визначає програми, які будуть запущені при запуску системи. Демон init в System-V системах підтримує різні "рівні виконання", кожний з яких робить доступним для системи певні сукупності системних ресурсів. Командні файли запуска об'єднуються в декілька груп та викликаються в процесі проходження init по рівням виконання.

Для оригінальних System-V систем налаштування демона виконується за допомогою файла /etc/inittab. Якщо в даних системах файл inittab пошкоджений, завантажити систему можливо лише в режимі одного користувача.

Формат inittab файла[ред.ред. код]

id:рівень:дія:процес

де id - це ім'я елемента файла inittab. В полі рівень заноситься інформація, до якого рівня або рівнів виконання повинен застосовуватись даний елемент. Поле дія містить інформацію про те, що повинен робити демон init:

  • очікувати завершення процесу (wait)
  • виконувати процес тільки один раз (once)
  • перезапустити процес при його завершенні (respawn)
  • ігнорувати даний елемент (off)

В полі процес міститься командна строка інтерпретатора sh, яку init запускає при переході на даний рівень.

Приклад файла /etc/inittab для операційної системи Solaris 8:

ap::sysinit:/sbin/autopush -f /etc/iu.ap
ap::sysinit:/sbin/soconfig -f /etc/sock2path
fs::sysinit:/sbin/rcS sysinit           >/dev/msglog 2<>/dev/msglog </dev/console
is:3:initdefault:
p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/msglog 2<>/dev/msglog
sS:s:wait:/sbin/rcS                     >/dev/msglog 2<>/dev/msglog </dev/console
s0:0:wait:/sbin/rc0                     >/dev/msglog 2<>/dev/msglog </dev/console
s1:1:respawn:/sbin/rc1                  >/dev/msglog 2<>/dev/msglog </dev/console
s2:23:wait:/sbin/rc2                    >/dev/msglog 2<>/dev/msglog </dev/console
s3:3:wait:/sbin/rc3                     >/dev/msglog 2<>/dev/msglog </dev/console
s5:5:wait:/sbin/rc5                     >/dev/msglog 2<>/dev/msglog </dev/console
s6:6:wait:/sbin/rc6                     >/dev/msglog 2<>/dev/msglog </dev/console
fw:0:wait:/sbin/uadmin 2 0              >/dev/msglog 2<>/dev/msglog </dev/console
of:5:wait:/sbin/uadmin 2 6              >/dev/msglog 2<>/dev/msglog </dev/console
rb:6:wait:/sbin/uadmin 2 1              >/dev/msglog 2<>/dev/msglog </dev/console
sc:234:respawn:/usr/lib/saf/sac -t 300
co:234:respawn:/usr/lib/saf/ttymon -g -h -p "`uname -n` console login: " -T sun -d /dev/console -l console -m ldterm,ttcompat

Каталог /etc/rcN.d містить всі сценарії, пов'язані з рівнем виконання N. В даному каталозі містяться посилання на файли /etc/init.d. Кожен сценарій отримує тільки один параметр - start або stop. Всі сценарії, що починаються з К, викликаються з аргументом stop. Правило іменування посилання зводиться до наступного формату - KNcommand, де N - номер, command - відповідно до прийнятої в системах типу SYSTEM V угоди, ім'я вихідного файлу з /etc/init.d.

Сценарії запуску мають назву SNcommand. Всі сценарії виконуються в алфавітно-цифровому порядку.

Приклад системного коду, що обробляє параметри запуску скриптів

if [ -d /etc/rc0.d ]; then
        for f in /etc/rc0.d/K*; do
                if [ -s $f ]; then
                        case $f in
                                *.sh)   .        $f ;;
                                *)      /sbin/sh $f stop ;;
                        esac
                fi
        done

        for f in /etc/rc0.d/S*; do
                if [ -s $f ]; then
                        case $f in
                                *.sh)   .        $f ;;
                                *)      /sbin/sh $f start ;;
                        esac
                fi
        done
fi

Наступна таблиця містить в собі призначення рівнів виконання за замовчуванням в Debian Linux

* 0              System Halt
* 1              Single user
* 2              Full multi-user mode (Default)
* 3-5            Same as 2
* 6              System Reboot

Для визначення поточного рівня виконання системи використовують команди "runlevel" або "who -r". Для зміни рівня виконання використовуються різні команди в залежності від операційної системи. Для Solaris це команда "init N", де N - номер потрібного рівня. В Linux використовують команду "telinit N"

Література[ред.ред. код]

  1. Evi Nemeth, Garth Snyder, Scott Seebass, Trent R. Hein UNIX System Administration Handbook. Prentice Hall PTR (В перекладі на російську: Эви Немет, Гарт Снайдер, Скотт Сибасс, Трент Р. Хейн UNIX руководство системного администратора. Издание третье. bhv Киев 1998.)
  1. http://www.debian-administration.org/articles/212