Основные демоны
Категория: Процессы-демоны | Автор: admin | 2-07-2010, 09:45 | Просмотров: 3597

Демон init — это первый процесс, который запускается после начальной загрузки системы, и во многих отношениях это самый важный демон. Он всегда имеет идентификатор процесса 1 и является предком всех пользовательских и почти всех системных процессов.

Во время начальной загрузки демон init либо переводит систему в однопользовательский режим, либо порождает интерпретатор команд для чтения стартовых сценариев. Когда система загружается в однопользовательском режиме, демон init начинает читать стартовые сценарии после того, как однопользовательский интерпретатор команд завершается нажатием клавиш <Ctrl-D>.

После обработки файлов запуска демон init обращается к файлу конфигурации (/etc/ttytab, /etc/ttys или /etc/inittab, в зависимости от системы) и получает оттуда список портов, через которые следует ожидать входа в систему. Демон init активизирует эти порты и порождает для каждого из них процесс getty. Если порт открыть нельзя, демон init периодически выдает на системную консоль сообщения, пока порт не будет открыт или удален из списка активных портов.

В старых системах управление терминальными портами было основной задачей администраторов. Сегодня терминалы являются реликтами былой эпохи. Пользователи регистрируются в системах по сети при помощи таких демонов, как rlogind, telnetd и sshd.

Демон init, кроме того, выполняет довольно неприятную задачу: изгоняет еще живые процессы-зомби, которые скапливаются в системе.

Останов системы осуществляется путем передачи демону init соответствующего сигнала (обычно это SIGTERM), который заставляет его перевести систему в однопользовательский режим. Это последняя операция в большинстве сценариев останова. Демон init играет настолько существенную роль в работе системы, что в случае его зависания инициируется автоматическая перезагрузка системы.

В большинстве современных систем демон init поддерживает различные "уровни выполнения", на которых его можно запускать. Уровни выполнения определяют, какой набор системных ресурсов нужно задействовать. Обычно есть семь или восемь уровней: от 0 до 6 плюс уровень "s" (однопользовательский режим). Описания характеристик уровней выполнения содержатся в файле /etc/inittab.

Начальный уровень выполнения назначается (передается в виде аргумента командной строки) демону init системным загрузчиком. Если задан уровень "s", демон init входит в однопользовательский режим. В противном случае он находит в файле /etc/inittab записи, соответствующие указанному уровню, и выполняет содержащиеся в них команды.

Для изменения уровня выполнения в процессе работы системы используется команда telinit. Например, команда telinit 4 заставляет демон init перейти на уровень выполнения 4. Самый полезный аргумент команды telinit-q, который заставляет демон init повторно прочитать файл /etc/inittab.

В тех системах, где стартовые сценарии хранятся в каталоге /etc/init.d и имеют ссылки на каталоги /etc/rcX.d, перевод демона init на определенный уровень вызывает выполнение сценариев из соответствующего каталога (/etc/rcX.d, где X — новый уровень выполнения) с аргументом start. Сценарии, связанные со старым уровнем выполнения, выполняются с аргументом stop. Это позволяет упорядочить запуск и останов системы.

Во FreeBSD демону init можно дать указание перечитать свой управляющий файл. Для этого посылается сигнал отбоя (SIGHUP). Поскольку демон init всегда имеет один и тот же идентификатор процесса, можно просто выполнить команду kill -HUP 1. Не забудьте указать аргумент -HUP, иначе система зависнет.



 (голосов: 0)
Версия для печати | Комментариев: 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.


 
Логин
Пароль
 

 
Locations of visitors to this page