• Narrow screen resolution
  • Wide screen resolution
  • Wide screen resolution
OOPS. Your Flash player is missing or outdated.Click here to update your player so you can see this content.
Главная Linux Автозапуск сервисов в ОС Linux. Уровни выполнения
Автозапуск сервисов в ОС Linux. Уровни выполнения Печать E-mail
Рейтинг пользователей: / 1
ХудшийЛучший 
Автор: Administrator   

2.8. Автозапуск сервисов в ОС Linux. Уровни выполнения


После того, как ядро и драйверы устройств будут загружены в память, процесс загрузки ОС Linux продолжается вызовом процесса init. Процесс init запускает скрипт /etc/rc.d/rc.sysinit, который осуществляет загрузку дополнительных модулей ядра, установку раскладки клавиатуры, сетевых настроек, системного времени, монтирование разделов и установку имени хоста. Далее процесс init на основании данных, содержащихся в файле /etc/inittab, определяет какой уровень выполнения необходимо использовать и последовательно продвигается от уровня 0 к уровню по умолчанию, указанному в файле /etc/inittab директивой id:5:initdefault:.

В файле /etc/inittab содержится информация по всем уровням выполнения, виртуальным терминалам, init-скриптам и другим системным параметрам. Уровнями выполнения (runlevels) в ОС Linux называются несколько специальных режимов работы, в каждом из которых происходит запуск или остановка определенных init-скриптов. Описание уровней выполнения ОС Linux приведено в таблице

 

Уровни выполнения ОС Linux.

Уровень

Значение

0

Остановка Системы

1

Запуск ОС в режиме одного пользователя (single-user mode) без поддержки сетевых сервисов. Загрузка ОС и последующая работа производятся в режиме командной строки.

2

Запуск ОС в многопользовательском режиме без поддержки сетевых сервисов. Загрузка ОС и последующая работа производятся в режиме командной строки.

3

Запуск ОС в многопользовательском режиме с поддержкой сетевых сервисов. Загрузка ОС и последующая работа производятся в режиме командной строки.

4

Не используется.

5

Запуск ОС в многопользовательском режиме с поддержкой сетевых сервисов. Загрузка ОС и последующая работа производятся в графическом режиме.

6

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

 

 

Смена уровней выполнения осуществляется скриптом /etc/rc.d/rc, который запускает все остальные системные процессы, по средствам обращения к символьным ссылкам init-скриптов, содержащихся в каталогах rc0.d - rc6.d. Имена ссылок начинаются с префикса S или К, за которым следует порядковый номер и имя сервиса, управляемого данным init-скриптом (например, S55sshd). При переходе на более высокий уровень выполнения, процесс init выполняет все скрипты с префиксом S в порядке возрастания порядковых номеров, причем каждый init-скрипт запускается с параметром start. При переходе на более низкий уровень выполнения, процесс init выполняет все скрипты с префиксом К в порядке убывания порядковых номеров, причем каждый init-скрипт запускается с параметром stop.

В листинге приведен частичный вывод каталога /etc/rc.d/rc3.d, который соответствует 3-му функциональному уровню загрузки. Из данного листинга видно, что сервис sshd запускается под номером 55 после того, как все предыдущие сервисы, содержащие префикс S будут запущены.

l rwxrwxrwx 1 root root 16 Dec 9 17:19 K02dhcdbd -> ../init.d/dhcdbd
l rwxrwxrwx 1 root root 14 Dec 9 17:21 S26hidd -> ../init.d/hidd
l rwxrwxrwx 1 root root 16 Dec 9 17:22 S28autofs -> ../init.d/autofs
l rwxrwxrwx 1 root root 15 Dec 9 17:21 S44acpid -> ../init.d/acpid
l rwxrwxrwx 1 root root 15 Dec 9 17:21 S50hplip -> ../init.d/hplip
l rwxrwxrwx 1 root root 14 Dec 9 17:20 S55sshd -> ../init.d/sshd


Содержание файла /etc/inittab

Содержание часть строк файла /etc/inittab представлено ниже

 

id:5:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
.......................................
l6:6:wait:/etc/rc.d/rc 6
ca::ctrlaltedel:/sbin/shutdown -t3 -r now
pf::powerfail:/sbin/shutdown/ -f -h +2 "Power Failure; System Shutting Down"
pf:12345:powerfail:/sbin/shutdown/ -c "Power Restored; Shutdown Cancelled"
1:2345:respawn:/sbin/mingetty tty1
................................................
6:2345:respawn:/sbin/mingetty tty6
x:5:respawn:/etc/X11/prefdm -nodaemon

Содержание файла /etc/inittab

В  первой  /etc/inittab содержится  директива  определения  функционального  уровня  по умолчанию (initdefault). Из данного примера видно, что по умолчанию система функционирует на уровне 5, который ассоциирован с работой в графическом режиме. Каждая строка файла /etc/inittab записывается в определенном формате и состоит из 4 полей:

идентификатор:уровень:действие:команда

  1. идентификатор - поле, состоящее из 1-4 символов, обозначающих функционал данной записи.
  2. уровень - поле, содержащее список уровней, для которых применяется указанная команда. Например, запись 345 означает выполнение команды на уровнях 3, 4 и 5.
  3. действие - специальное действие, которое должен выполнить процесс init прежде чем перейти к считыванию следующей строки файла /etc/inittab. Например, запись wait говорит о том, что процесс init должен дождаться завершения выполнения указанной команды. Запись respawn говорит о том, что процесс init должен повторно выполнить команду в случае её завершения.
  4. команда - в данном поле указана команда, которую необходимо выполнить, со всеми ее аргументами и опциями.

Помимо определения уровней выполнения, в файле /etc/inittab содержится определение ряда дополнительных команд и виртуальных терминалов. Первая из команд определяет, каким образом в системе будет осуществляться перехват клавиш CTRL+ALT+DELETE:

са::ctrlaltdel:/sbin/shutdown -t3 -г now


Следующие две команды определят поведение системы в случае получения аварийного сигнала от источника бесперебойного питания (UPS):


pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting
Down"
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"


Далее в файле /etc/inittab следует определение виртуальных терминалов. Виртуальный терминал - это сеанс командной строки, в которой можно выполнять операции по администрированию и работе с системой. По умолчанию, в ОС Linux определено шесть виртуальных терминалов, количество которых можно увеличить до 12. Поскольку ОС Linux является многопользовательской системой, несколько разных пользователей могут одновременно работать из нескольких разных терминалов, включая графическую оболочку.
Переключение между терминалами осуществляется при помощи клавиш , где п принадлежит интервалу чисел от 1 до 12 и обозначает соответствующий номер виртуального терминала. Например, для переключения на третий виртуальный терминал необходимо нажать .
Последним звеном процесса загрузки ОС Linux является скрипт /etc/rc.d/rc.local, который выполняется последним и предназначен для добавления пользовательских сценариев запуска.
Управление уровнями выполнения является очень важным аспектом администрирования ОС Linux. Вы должны уметь настраивать уровень выполнения, используемый системой по умолчанию, а также определять какие из системных процессов должны запускаться автоматически на данном уровне.
По умолчанию ОС Linux загружается на 5-й уровень выполнения, о чем свидетельствует запись id:5:initdefault: файла /etc/inittab. Для изменения уровня по умолчанию необходимо изменить второе поле данной записи, используя текстовый редактор. Сделанные изменения вступят в силу только после перезагрузки системы. Для того чтобы изменить текущий уровень выполнения без перезагрузки системы необходимо запустить следующую команду от пользователя root:
init , где - число от 0 до 6.
Для настройки автозапуска процессов в ОС Linux используются следующие команды и утилиты:

  • chkconfig;
  • ntsysv;
  • service configuration tool.

Команда chkconfig может использоваться как для просмотра текущей конфигурации уровней выполнения, так и для их настройки и предоставляет наиболее простой механизм осуществления следующих действий:
просмотр текущих настроек сервисов;

  • Просмотр текущих настроек сервисов;
  • изменение текущих настроек сервисов;
  • добавление/удаление сервисов из структуры каталогов /etc/red;
  • включение/отключение автоматического запуска сервисов.

Команда chkconfig имеет следующий синтаксис:

chkconfig --list [имя сервиса]
chkconfig --add
chkconfig --del
chkconfig [--level ]


имя сервиса - обозначает название системного процесса или сервиса, init-скрипт которого присутствует в каталоге /etc/rc.d/init.d, причем имя сервиса должно совпадать с названием его init-скрипта.
опция --list используется для просмотра текущих настроек сервиса.
опции --add и --del используются для добавления и удаления символьных ссылок сервисов в структуру каталогов /etc/red.
опция --level определяет, для каких уровней выполнения необходимо выполнить указанные далее действия.
параметры on, off, reset используются для изменения статуса запуска сервиса.


При указании параметра off сервис исключается из автозапуска в процессе загрузки ОС. При указании параметра on сервис запускается в процессе загрузки ОС. При указании параметра reset статус запуска сервиса устанавливается согласно изначальной конфигурации, указанной в файле init-скрипта.
В примере приведены примеры использования команды chkconfig для управления сервисами.


[root@rhel5 ~]# chkconfig --list l grep sendmail
sendmail          0:off    1:off    2:on      3:on      4:on      5:on      6:off
[root@rhel5 ~]# chkconfig --level 245 sendmail off
[root@rhel5 ~]# chkconfig --list l grep sendmail
sendmail        0:off    1:off    2:off 3:on      4:off      5:off      6:off
[root@rhel5~]# chkconfig sendmail reset
[root@rhel5~]# chkconfig --list l grep sendmail
sendmail        0:off    1:off    2:on 3:on      4:on      5:on      6:off

 

Примеры использования команды chkconfig.


В первой строке примера осуществляется вывод текущих настроек запуска сервиса sendmail, из которых видно, что для данного сервиса настроен автозапуск на уровнях 2, 3, 4 и 5. Во второй строке данного листинга осуществляется отключение автозапуска сервиса sendmail на уровнях 2, 4 и 5. Далее при помощи параметра reset осуществляется возврат первоначальных настроек автозапуска сервиса sendmail согласно записи (# chkconfig: 2345 80 30), указанной в файле /etc/rc.d/init.d/sendmail.
Для добавления нового сервиса в структуру каталогов /etc/red необходимо, чтобы init-скрипт сервиса имел как минимум две обязательные записи:


1.    # chkconfig: 2345 80 30
Данная запись говорит о том, что в каталогах /etc/rc.d/rc2.d, /etc/rc.d/rc3.d, /etc/rc.d/rc4.d и /etc/rc.d/rc5.d (уровнях 2, 3, 4 и 5) необходимо создать символьные ссылки на данный init-скрипт, причем ссылкам с префиксом S будет присвоен порядковый номер 80, а ссылкам с префиксом К будет присвоен порядковый номер 30.

2.    # description:
В данной записи приводится формальное описание сервиса.
Например, для сервиса sendmail данные две записи имеют следующий бид:
# chkconfig: 2345 80 30
# description: Sendmail is a Mail Transport Agent, which is the program \
#                 that moves mail from one machine to another.


Для управления автозапуском сервисов в интерактивном режиме используется команда ntsysv, которая имеет следующий синтаксис:
ntsysv [--back] [--level ]
Для указания уровней выполнения, на которых необходимо настроить автозапуск сервисов, используется необязательная опция
--level. В случае запуска данной команды без параметров на терминале будет отображено окно настройки сервисов для текущего функционального уровня.
Для управления сервисами, находясь в графическом режиме, используется программа Service Configuration Tool. Данную программу можно запустить непосредственно из командной строки, выполнив команду system-config-services, или из графической оболочки, выбрав ярлык Services, расположенный на вкладке System —> Administration —> Services.

 

 

 




 

 

 

Добавить комментарий


Защитный код
Обновить


Авторизация

Перевод


Новости с OpenNet

Проект OpenNET


Яндекс.Метрика
Карта сайтаПартнеры