Книга: Сетевые средства Linux
Управление уровнями выполнения
Управление уровнями выполнения
В предыдущих разделах постоянно упоминались уровни выполнения, но из сказанного вряд ли стало ясно, что же они собой представляют. Говорилось лишь о том, что уровни выполнения и сценарии запуска SysV тесно связаны между собой. При загрузке компьютер переходит на некоторый уровень выполнения. Этому уровню соответствует каталог ссылок SysV; содержащиеся в нем ссылки указывают на сценарии запуска. Если ссылка начинается с символа "S" Linux при вызове сценария передает ему параметр start
, а если имя ссылки начинается с "K
", сценарию передается параметр stop
.
Но как Linux узнает, на какой уровень следует перейти после загрузки? Информация об этом хранится в файле /etc/inittab
, который выполняет роль конфигурационного файла для init
— первого процесса, выполняющегося в системе. Процесс init
является родительским для всех остальных процессов в системе. В файле /etc/inittab
содержатся записи наподобие приведенной ниже.
id:5:initdefault:
Ключевое слово id
, расположенное в начале, идентифицирует данную строку, а число, следующее за ним (в данном случае 5), устанавливает постоянный уровень выполнения. Если вы измените это значение и перезагрузите компьютер, система будет работать на другом уровне. Уровни 0, 1 и 6 имеют специальное назначение. Уровень 0 соответствует завершению работы системы, уровень 1 — однопользовательскому режиму, а уровень 6 — перезагрузке системы. Уровни 2–5 задают нормальные режимы работы; назначение каждого из уровней может изменяться в зависимости от версии системы. В Caldera, Red Hat Mandrake SuSE7.3 и TurboLinux уровень 3 соответствует обычному текстовому режиму (система X Window не запускается), а уровень 5 поддерживает графический пользовательский интерфейс (система X Window запущена). В ранних версиях SuSE вместо уровней 3 и 5 для поддержки текстового режима и графического интерфейса используются уровни 2 и 3, а в Slackware для той же цели применяются уровни 3 и 4. По умолчанию в Debian на уровнях 2–5 набор серверов, запускаемых посредством сценариев SysV, существенно не отличается, но на уровнях выше третьего используется меньшее число инструментов с текстовым интерфейсом (детали настройки системы можно выяснить, просмотрев содержимое файла /etc/inittab
). В большинстве систем файл /etc/inittab
содержит подробные комментарии, которые описывают функциональные возможности каждого из уровней. Если вы используете версию системы, которая не обсуждается в данной книге, или если вам нужна дополнительная информация о работе системы на различных уровнях, вы можете получить требуемые сведения, просмотрев комментарии в этом файле.
Внимание
Не устанавливайте в качестве уровня по умолчанию уровень 0 или 6. Если вы поступите так, то сразу после загрузки работа системы будет завершена либо компьютер начнет перезагружаться. Для того чтобы изменить настройку, вам придется загрузить компьютер с другого диска.
Если вы хотите временно изменить уровень выполнения, сделайте это с помощью команды telinit
(в некоторых системах для этого приходится вызывать init). Синтаксис telinit
имеет следующий вид:
telinit [-t время_в_секундах] [уровень]
При изменении уровня выполнения некоторые процессы могут быть завершены. Для завершения процесса Linux передает ему сигнал SIGTERM
либо SIGKILL
. Сигнал SIGTERM
обеспечивает более "мягкий" режим окончания работы; при этом программа получает возможность закрыть файлы и освободить другие ресурсы. SIGKILL
принудительно завершает выполнение программы, в результате файлы, используемые в процессе его работы, могут быть повреждены. При изменении уровня выполнения telinit
сначала пытается использовать SIGTERM
. Если процесс продолжает выполняться, то через пять секунд telinit
передает ему сигнал SIGKILL
. Опция -t
позволяет изменить этот интервал. В большинстве случаев значение, равное пяти секундам, вполне приемлемо.
Второй параметр, передаваемый telinit
, задает уровень выполнения. Для указания уровня используется один символ. Результаты, которые вы получите, задавая в качестве этого параметра число, очевидны. Кроме того, вы можете передать программе другие символы. Их назначение описано ниже.
• а
, b или с
. Некоторые записи в файле /etc/inittab
идентифицируются с помощью символов a
, b и с
. Эти символы имеют специальное назначение. Если вы передадите один из них telinit
, программа будет обрабатывать соответствующие ему записи /etc/inittab
; при этом уровень выполнения системы не изменится.
• Q
или q
. Если задать одно из этих значений как уровень выполнения, telinit
повторно считает содержимое файла /etc/inittab
и продолжит работу с учетом внесенных изменений.
• S, или s. Эта опция переводит систему в однопользовательский режим.
• U
, или u
. Данная опция вызывает перезагрузку процесса init
; при этом новое содержимое файла /etc/inittab
не считывается.
Зачем может понадобиться переходить на другой уровень выполнения? Изменяя уровень выполнения по умолчанию, вы можете изменять набор серверов, работающих в системе. В большинстве дистрибутивных пакетов самым важным считается сервер X Window. Одна из последних записей в файле /etc/inittab
управляет запуском этого сервера; в некоторых системах эта задача решается с помощью сценариев запуска SysV. Изменение уровня выполнения позволяет быстро перейти от одного набора сервера к другому, разрешить или запретить графический режим или временно отключить X Window.
- Права для выполнения резервного копирования
- Упражнения для самостоятельного выполнения
- 1.4.1. Кодирование во время выполнения
- УПРАВЛЕНИЕ РЕПУТАЦИЕЙ В ИНТЕРНЕТЕ
- Глава 7 Управление хранилищем данных
- Глава 11 Корпоративное управление и стратегия
- 5.7 Устройства NAS под управлением Windows и моментальные снимки
- 7.8 Управление иерархическим хранилищем
- Управление файлами занятий
- Управление пользователями и разрешениями узла
- Управление функциями узла
- Управление объединением содержимого узлов