Уровни запуска

Linux Mint унаследовал систему запуска, принятую когда-то в  Unix  System V. Главное ее отличие — наличие нескольких уровней загрузки  системы. Начнем с того, что все сервисы, устанавливаемые  в системе  при помощи пакетов, прописывают в каталог /etc/init.d — скрипт, позволяющий ими управлять.

Кроме непосредственно запуска сервиса такой скрипт может  устанавливать дополнительные переменные и параметры, необходимые для его корректной работы. Скрипт называется, как правило, так же, как  и  исполняемый файл, или  его имя показывает назначение. Например, за запуск, остановку и  перезагрузку сетевых интерфейсов отвечает скрипт /etc/init/d/networking. Например, чтобы перезапустить сетевые интерфейсы (ну мало ли зачем), просто вводим

$ sudo /etc/init/d/networking restart

или, как вариант, вместо restart используем  force-reload для быстрой перезагрузки  сервиса.

ПРИМЕЧАНИЕ

Если запустить скрипт без дополнительных указаний, он выдаст допустимые параметры, обычно это start, stop, restart и force-reload.

Если посмотреть список файлов  в /etc/init.d, то мы увидим, что их достаточно много. Удалить оттуда файл, значит, фактически лишить пользователя возможности загрузить  сервис вручную. Возникает резонный вопрос: они все загружаются?  Нет. На этапе развития Unix-систем пришли к простой схеме: в каталоге /etc/init.d размещаются скрипты, а в отдельном каталоге или файле указывается список тех, которые необходимо запускать. В Linux Mint используются именно каталоги. В /etc находятся каталоги с именем, начинающимся с rc — /etc/rc.local,/etc/rc0.d,/etc/rc1.d,

/etc/rc2.d, /etc/rc3.d, /etc/rc4.d, /etc/rc5.d, /etc/rc6.d и /etc/rcS.d. Если  просмотреть список файлов внутри, то увидим, что все они являются символическими ссылками на файл в /etc/init.d. Приведу для примера часть файлов, размещенных в /etc/rc5.d/. Для этого воспользуемся консольной командой Is .

$ ls -al /etc/rc2.d/

lrwxrwxrwx  1 root root   20 2010-05-22 13:14 K20fancontrol

->  ../init.d/fancontrol

lrwxrwxrwx  1 root root   17 2010-05-22 13:14 S20hddtemp

->  ../init.d/hddtemp

lrwxrwxrwx  1 root root   19 2010-05-22 13:14 S25bluetooth

->  ../init.d/bluetooth

lrwxrwxrwx  1 root root   18 2010-05-22 13:14 S99rc.local

->  ../init.d/rc.local

Как видите, файл /etc/rc5.d/K20fancontrol на самом деле является символической ссылкой на файл /etc/init.d/fancontrol.

ПРИМЕЧАНИЕ

В консоли можно указывать абсолютное имя файла как относительно корня дерева, так и относительно текущего положения. При этом (.) точка означает текущий каталог, а две точки (..) — каталог уровнем выше.

Теперь разберем, что мы получили.  Из каталога /etc/rcS.d запускаются  базовые системные компоненты, их лучше не трогать. Чуть выше было сказано об уровнях загрузки (runlevels) Linux, которые позволяют установить сервисы в зависимое  ти от выбранного варианта использования системы. Всего пять уровней, рассмотрим их.

1.          Однопользовательский режим — в системе не запускаются дополнительные службы, как правило, доступна одна консоль,  отсутствуют сетевые подключения. Применяется обычно при аварийно-восстановительных  работах.

2.          Многопользовательский режим  с минимально  необходимыми  сервисами  — досту п к сети  отсутствует, применяется  при  первичной  настройке  серверов  в  целях повышения безопасности.

3.          Многопользовательский режим — работают все предопределенные сервисы, сеть

доступна, в таком режиме загружаются все сервера.

4.          Не используется/не определен — администратор может самостоятельно его настроить.

5.          Многопользовательский режим с использованием графической подсистемы — именн о в нем работают по умолчанию  все дистрибутивы, ориентированные на работу в качестве настольной системы.

Кроме этого определены режимы: 0 — остановка системы и 6 — перезагрузка. Их также не следует трогать, поскольку в  этих режимах  выполняются операции  по корректному завершению работы системы (размонтирование ресурсов, остановка служб и т. д.). Так говорит теория, но на практике из правил,  как обычно, имеются исключения. Если  просмотреть ссылки  в  Linux Mint, то получится, что разницы

между уровнями 25 нет. Команда runlevel, введенная  в Linux Mint, выводит уровень 2 загрузки:

$ runlevel

ПРИМЕЧАНИЕ

Как вариант, для  просмотра  уровня загрузки  можно  использовать  команду who -r .

В дальнейшем будем считать, что Linux Mint загружается на уровне 2, поэтому нас интересует содержимое каталога /etc/rc2.d/. После установки системы в нем найдем

более десятка ссылок, имя которых будет начинаться с буквы S или К, затем следует цифра  и название программы. Цифра показывает порядок загрузки демонов. Это сделано для того, чтобы удовлетворить зависимости. Например, некоторый сервис требует, чтобы вначале была активирована сеть: если его запустить, перед тем как будут подняты сетевые интерфейсы, он завершится с ошибкой. Чем меньше цифра, тем раньше загрузится демон. Если вы добавляете  свой сервис и не уверены в том, что знаете порядок, установите просто самую максимальную цифру — 99. Кстати,

под 99 идет ссылка на файл /etc/init.d/rc.local. Он вместе с /etc/rc.local предназначен

для запуска сервисов, определенных самим пользователем. Просто открываем файл в редакторе и  вписываем команду для запуска, и  нужная  программа или  сервис

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

$ ln -s /etc/init.d/samba /etc/rc2.d/S20samba

Здесь S (start) показывает, что демон будет загружаться, а К (Kill) — не будет работать. Иными словами, чтобы временно приостановить запуск демона при загрузке систем, мы можем не удалять символическую ссылку, а просто заменить букву S на К:

$ sudo mv /etc/rc2.d/S20hddtemp /etc/rc5.d/K20hddtemp

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

Вручную создавать и удалять ссылки необязательно. В комплекте Linux Mint доступна консольная утилита update-rc.d, которая позволяет  создавать  все необходимые ссылки  и  контролирует очередность загрузки сервисов.  Все ее параметры доступны в справочной системе man, чтобы получить доступ к ней, следует ввести в консоли

$ man update-rc.d

Параметры запуска просты. Чтобы удалить программу program из  автозагрузки, используем

$ sudo update-rc.d program remove

Если  необходимо просто просмотреть, что будет делать утилита без  выполнения собственно  операции удаления, добавляем ключ  -n.  Ключ -f  позволит  принудительно удалить ссылки  в  любом случае. Для активации  сервиса на всех уровнях используем  параметр defaults .

$ sudo update-rc.d program defaults

Можно указать и действия на конкретных уровнях:

$ sudo update-rc.d program start 20 2 3 4 5 . stop 20 0 1 6 .

Теперь программа будет стартовать на уровнях 25 и  отключена на уровнях 0,1 и 6. Цифра 20 на первой позиции указывает число, которое будет стоять после S или К, то есть S20 или К20.

ПРИМЕЧАНИЕ

Утилита insservis используется дл я  обновлени я  списка символически х  ссылок на основе LSB-сценарие в загрузки, чтобы  вначале запускались  зависимые сервисы. Она доступн а посл е установки Linux Mint, просто  запустите ее в терминале .

Источник: Яремчук С. А.  Linux Mint на 100 %. — СПб.: Питер, 2011. — 240 е.: ил. — (Серия «На 100 %»).

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий