Все файлы, связанные с запуском системы,
находятся в каталоге /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
. В стандартной
установке Mandriva Linux вы могли увидеть, что
существует шесть уровней выполнения:
1: однопользовательский режим. Используется в случае возникновения серьезных проблем или для восстановления системы.
2: многопользовательский режим без поддержки сети.
5: аналогичен 3-му уровню выполнения, но запускается графический интерфейс для входа в систему.
Давайте взглянем на содержимое каталога
rc3.d
:
$ ls /etc/rc.d/rc3.d/ K09dm@ S12syslog@ S24messagebus@ S40atd@ S91dictd-server@ S01udev@ S13partmon@ S25haldaemon@ S55sshd@ S92lisa@ S03iptables@ S15cups@ S25netfs@ S56ntpd@ S95kheader@ S05harddrake@ S17alsa@ S29numlock@ S56rawdevices@ S99local@ S10network@ S18sound@ S33nifd@ S75keytable@ S11shorewall@ S20xfs@ S34mDNSResponder@ S90crond@ $
Как видите, все файлы в этом каталоге являются символическими ссылками, и все они имеют весьма специфический вид. Их общий вид такой:
<S|K><порядок><имя_службы>
S
означает запуск
(Start) службы, а K
означает остановку (Kill)
службы. Скрипты запускаются в порядке
возрастания номеров, а если два скрипта
имеют одинаковый номер, тогда применяется
прямой алфавитный порядок. Мы также можем
видеть, что все символические ссылки
указывают на определенные скрипты,
находящиеся в каталоге
/etc/rc.d/init.d
(за исключением
скрипта local, отвечающего за
управление особой службой.)
Когда система переходит на заданный
уровень выполнения, она начинает с того,
что запускает по порядку ссылки
K
: команда rc ищет, куда
указывает ссылка, затем вызывает
соответствующий скрипт с одним
аргументом stop
. Затем она
запускает скрипты S
, используя
такой же метод, за исключением тех
скриптов, которые вызваны с аргументом
start
.
Итак, не рассматривая всех скриптов, мы
можем увидеть, что когда система
переходит на 3-й уровень выполнения, она
сначала запускает команду K09dm
(т.е. /etc/rc.d/init.d/dm stop). Далее она
запускает все скрипты S
: сначала
S01udev, который в свою очередь
вызывает /etc/rc.d/init.d/udev start, затем
S03iptables и так далее.
Вооружившись этой информацией, вы за несколько минут сможете создать свой собственный уровень выполнения (задействовав, например, 4-й), или предотвратить запуск или остановку службы, удалив соответствующую символическую ссылку.
Вы также можете воспользоваться командой
chkconfig для добавления, удаления,
включения или выключения служб на
заданных уровнях выполнения. Используйте
команду chkconfig --add имя_службы для
добавления (включения) службы
имя_службы
на всех
поддерживаемых[30] уровнях выполнения и chkconfig --del
имя_службы для удаления (выключения)
названной службы на всех уровнях
выполнения.
![]() | Подсказка |
---|---|
Выполните команду chkconfig --list, чтобы увидеть список поддерживаемых служб, их имена и состояние для всех определённых уровнея запуска. |
Выполнение команды chkconfig --levels 35 sshd
on включит сервер SSH (sshd
) на
3-м и 5-м уровнях, а выполнение chkconfig
--levels 3 sound off уберёт поддержку звука
на 3-м уровне. Если вы опустите параметр
--levels список_уровней
, названные
службы будут включены или выключены на
уровнях выполнения and 5. Nи howОднако
обратите внимание, что вы можете включить
службы на уровнях выполнения без
соответствующей поддержки этих служб,
поэтому нужные уровни выполнения лучше
указывать явно.
В работающей системе службами можно управлять с помощью команды service, независимо от того, настроены ли они на запуск на определёном уровне выполнения или нет. Её синтаксис:
service имя_службы действие
Где имя_службы
- это название
службы, выводимое командой chkconfig
--list, а действие
может быть
одним из следующих:
Запускает названную службу. Пожалуйста,
обратите внимание, что большинство
служб предупредят вас, если они уже
выполняются, а вы пытаетесь снова
запустить их: используйте вместо неё
опцию restart
, описанную ниже.
Останавливает названную службу. Пожалуйста, обратите внимание, что если вы остановите службу, все подключенные к ней пользователи будут автоматически отключены.
Останавливает, а затем запускает названную службу. Это эквивалентно выполнению команды service имя_службы stop && service имя_службы start. Пожалуйста, обратите внимание, что если вы перезапустите службу, все подключенные к ней пользователи будут автоматически отключены.
Различные службы поддерживают
различные действия (предыдущие действия
поддерживаются всеми службами).
Например, reload
перезагружает
файл конфигурации без перезапуска самой
службы; force-stop
принудительно
останавливает службу; status
сообщает о состоянии службы; и др.
Выполнение service имя_службы без
параметров выводит инормацию обо всех
действиях, поддерживаемых названной
службой.
[30] «Поддерживаемые» уровни выполнения означает, что, например, сетевые службы не будут добавлены на 2-й уровень, который не поддерживает работу с сетью.