Рівень виконання
Рівень виконання (англ. runlevel) — визначає програми, які будуть запущені при запуску системи. Демон init в System-V системах підтримує різні «рівні виконання», кожний з яких робить доступним для системи певні сукупності системних ресурсів. Командні файли запуска об'єднуються в декілька груп та викликаються в процесі проходження init по рівням виконання.
Для оригінальних System-V систем налаштування демона виконується за допомогою файла /etc/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"
- Evi Nemeth, Garth Snyder, Scott Seebass, Trent R. Hein UNIX System Administration Handbook. Prentice Hall PTR (В перекладі на російську: Эви Немет, Гарт Снайдер, Скотт Сибасс, Трент Р. Хейн UNIX руководство системного администратора. Издание третье. bhv Киев 1998.)