Библиотека сайта rus-linux.net
Уровни работы |
||
---|---|---|
Глава 11. Загрузочные файлы: init sysv |
Уровни работы
Все файлы, связанные
с запуском системы, находятся в каталоге /etc/rc.d
.
Вот список его файлов:
$ ls /etc/rc.d init.d/ rc0.d/ rc2.d/ rc4.d/ rc6.d/ rc.local* rc.sysinit* rc* rc1.d/ rc3.d/ rc5.d/ rc.alsa_default* rc.modules* |
Как уже было отмечено, rc.sysinit - это первый файл, запускаемый системой. Он отвечает за установку базовой конфигурации машины: тип клавиатуры, конфигурация определенных устройств, проверка файловой системы и т.п.
Затем
запускается скрипт rc
с нужным номером уровня работы в качестве аргумента. Как мы уже
видели, уровень работы - это простое целое число, и для каждого из
определенных уровней работы <x>
должен быть соответствующий каталог rc<x>.d
.
В обычной установке Mandrakelinux вы могли поэтому увидеть, что
существует 6 уровней работы:
- 0: полная остановка машины;
- 1: однопользовательский режим. Используется в случае возникновения серьезных проблем или для восстановления системы.
- 2: многопользовательский режим без поддержки сети.
- 3: многопользовательский режим с поддержкой сети.
- 4: неиспользуемый.
- 5: 3-го аналог уровня работы, но запускается графический интерфейс для входа в систему.
- 6: перезагрузка.
Давайте взглянем на
содержимое каталога rc5.d
:
$ ls rc5.d K15postgresql@ K60atd@ S15netfs@ S60lpd@ S90xfs@ K20nfs@ K96pcmcia@ S20random@ S60nfs@ S99linuxconf@ K20rstatd@ S05apmd@ S30syslog@ S66yppasswdd@ S99local@ K20rusersd@ S10network@ S40crond@ S75keytable@ K20rwhod@ S11portmap@ S50inet@ S85gpm@ K30sendmail@ S12ypserv@ S55named@ S85httpd@ K35smb@ S13ypbind@ S55routed@ S85sound@ |
Как видите, все файлы в этом каталоге являются символическими ссылками, и все они имеют весьма специфический вид. Их общий вид такой:
<S|K><порядок><имя_службы> |
S
(от слова Start) означает запуск
службы, а K
(от слова Kill) означает остановку
службы. Скрипты запускаются в порядке возрастания номеров, а если два
скрипта имеют одинаковый номер, тогда применяется прямой алфавитный
порядок. Мы также видим, что каждая символическая ссылка указывает на
определенный скрипт, находящийся в каталоге /etc/rc.d/init.d
(за исключением скрипта local,
который отвечает за управление особой службой.)
Когда система
переходит на заданный уровень работы, она стартует путем запускания
по порядку ссылок K
:
команда rc
ищет, куда указывает ссылка, затем вызывает соответствующий скрипт с
одним аргументом stop
.
Затем она запускает скрипты S
,
используя такой же метод, за исключением тех скриптов, которые
вызваны с аргументом start
.
Итак, не
рассматривая всех скриптов, мы можем увидеть, что когда система
переходит на 5-й уровень работы, она сначала запускает команду
K15postgresql
(т.е. /etc/rc.d/init.d/postgresql stop).
Затем K20nfs,
затем K20rstatd,
и так далее до последней команды. Далее она запускает все скрипты S
:
сначала S05apmd,
который в свою очередь вызывает /etc/rc.d/init.d/apmd
start, и так далее.
Вооружившись этой информацией, вы за несколько минут сможете создать свой собственный уровень работы (задействовав, например, 4-й), или предотвратить запуск или остановку службы, удалив соответствующую символическую ссылку. Для этого вы также можете воспользоваться программами с интерфейсом, в особенности drakxservices (см. DrakXServices: Configuring Start-Up Services в Стартовое руководство???) или chkconfig для настройки в текстовом режиме.
-
Подсказка
Вы также можете воспользоваться командой chkconfig для вывода списка, добавления или удаления служб из определенного уровня работы. Смотрите chkconfig(8).
Вначале был init |
Часть III. Продвинутое использование |