Изучаем Linux, 101: Уровни выполнения, выключение и перезагрузка

Запуск вашей операционной системы

Из этой статьи вы узнаете, как выключить или перезагрузить ваш компьютер Linux, предупреждать пользователей о предстоящем завершении работы операционной системы и переключаться между различными уровнями выполнения. Вы можете использовать этот материал для подготовки к экзамену LPI 101 программы сертификации на администратора Linux начального уровня или просто для общего развития.

Об этой серии

Эта серия статей поможет вам освоить задачи администрирования операционной системы Linux. Вы также можете использовать материал этих статей для подготовки к экзаменам первого уровня сертификации профессионального института Linux (LPIC-1).

Чтобы посмотреть описания статей этой серии и получить ссылки на них, обратитесь к нашему перечню материалов для подготовки к экзаменам LPIC-1. Этот перечень постоянно дополняется новыми статьями по мере их готовности и содержит самые последние (по состоянию на апрель 2009 года) цели экзаменов сертификации LPIC-1. Если какая-либо статья отсутствует в перечне, можно найти ее более раннюю версию, соответствующую предыдущим целям LPIC-1 (до апреля 2009 года), обратившись к нашим руководствам для подготовки к экзаменам института Linux Professional Institute.

Краткий обзор

Из этой статьи вы узнаете, как выключить или перезагрузить ваш компьютер Linux, предупреждать пользователей о предстоящем завершении работы операционной системы и переключаться между различными уровнями выполнения. Вы научитесь:

  • Устанавливать уровень выполнения по умолчанию.
  • Переключаться между уровнями выполнения.
  • Переключаться в однопользовательский режим.
  • Выключать или перезагружать компьютер из командной строки.
  • Предупреждать пользователей о главных системных событиях, включая переход на другой уровень выполнения.
  • Корректно завершать работу процессов.

Все примеры этой статьи (кроме отдельно оговоренных) были выполнены в операционной системе Fedora 8 с версией ядра 2.6.26. Примеры процесса upstart выполнялись в операционной системе Fedora 13 с версией ядра 2.6.34 или в системе Ubuntu 10.10 с версией ядра 2.6.35.

Эта статья поможет вам подготовиться к сдаче экзамена LPI 101 на администратора начального уровня (LPIC-1) и содержит материалы цели 101.3 темы 101. Цель имеет вес 3.

Предварительные требования

Чтобы извлечь наибольшую пользу из наших статей, необходимо обладать базовыми знаниями о Linux и иметь работоспособный компьютер с Linux, на котором можно будет выполнять все встречающиеся команды. Иногда различные версии программ выводят результаты по-разному, поэтому содержимое листингов и рисунков может отличаться от того, что вы увидите на вашем компьютере. В частности, новая подсистема запуска служб и задач Upstart имеет много отличий от традиционного процесса System V init, который может быть знаком многим пользователям (для получения подробной информации обратитесь к разделу Init и Upstart). В этой статье рассматривается традиционный процесс запуска служб System V init, а его отличия от системы upstart будут кратко рассмотрены в конце статьи.


Уровни выполнения

Как связаться с Яном

Ян – один из наших наиболее популярных и плодовитых авторов. Ознакомьтесь со всеми статьями Яна (EN), опубликованными на сайте developerWorks. Вы можете найти контактные данные в профиле Яна и связаться с ним, а также с другими авторами и участниками ресурса My developerWorks.

Уровни выполнения определяют, какие задачи могут выполняться в текущем состоянии (или на текущем уровне выполнения) операционной системы Linux. Каждая операционная система Linux поддерживает три основных уровня выполнения и один или несколько дополнительных уровней выполнения. Основные уровни выполнения перечислены в таблице 1.

Таблица 1. Основные уровни выполнения Linux
Уровень выполненияНазначение
0Завершение работы компьютера.
1Однопользовательский режим (обычно имеет псевдоним s или S)
6Перезагрузка компьютера.

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

Таблица 2. Другие распространенные уровни выполнения Linux
Уровень выполненияНазначение
2Многопользовательский режим без поддержки сети.
3Многопользовательский режим с поддержкой сети.
5Многопользовательский режим с поддержкой сети и графической оболочки X Window.

В дистрибутиве Slackware для полного запуска системы в среде X Window вместо уровня 5 используется уровень 4. В дистрибутиве Debian (а также в дистрибутивах на его основе, например, в Ubuntu) для многопользовательского режима используется один уровень выполнения, обычно 2. Особенности вашего дистрибутива вы всегда может выяснить в его документации.


Уровень выполнения по умолчанию

При загрузке Linux уровень выполнения по умолчанию определяется значением параметра id: в файле /etc/inittab. В листинге 1 показано обычное значение этого параметра в таких системах, как Fedora 8 или openSUSE 11.2, в которых уровень выполнения 5 используется для запуска оболочки X Window.

Листинг 1. Уровень выполнения по умолчанию, определенный в /etc/inittab
[root@pinguino ~]# grep "^id:" /etc/inittab
id:5:initdefault:

Если вы хотите, чтобы по умолчанию ваша система запускалась с другим уровнем выполнения (например, с уровнем 3), то отредактируйте это значение.


Изменение уровня выполнения

Существует несколько способов изменения уровня выполнения. Чтобы выполнить постоянное изменение, можно отредактировать файл /etc/inittab, установив в нем уровень выполнения по умолчанию, как это было показано в предыдущем разделе.

Если необходимо загрузить систему с определенным уровнем выполнения один раз, то вы также можете сделать это. Например, предположим, что вы только что установили новое ядро и хотите добавить несколько модулей после загрузки системы с новым ядром, но до загрузки системы X Window. Для этого вы можете загрузить систему с уровнем выполнения 3. Это делается во время загрузки либо путем редактирования строки ядра (при использовании загрузчика GRUB), либо путем добавления параметра после имени выбранной системы (при использовании LILO). Для указания требуемого уровня выполнения используется одна цифра (в нашем случае 3). Мы приведем пример для системы, в которой используется менеджер загрузки GRUB. Предположим, что в вашем файле /boot/grub/menu.lst содержатся строки, показанные в листинге 2.

Листинг 2. Типовые строки загрузочного меню GRUB в системе Fedora 8
title Fedora (2.6.26.8-57.fc8)
        root (hd0,5)
        kernel /boot/vmlinuz-2.6.26.8-57.fc8 ro root=LABEL=FEDORA8 rhgb quiet
        initrd /boot/initrd-2.6.26.8-57.fc8.img

Для перевода системы на уровень выполнения 3 дождитесь вывода на экран загрузочного меню, выберите нужную запись и нажмите 'e' для ее редактирования. В зависимости от настроек GRUB вам может потребоваться нажать клавишу для вывода загрузочного меню, а также набрать 'p' и ввести пароль для получения прав на редактирование. Загрузочное меню GRUB в нашей системе Fedora 8 выглядит так, как показано на рисунке 1.

Рисунок 1. Выбор варианта загрузки в меню GRUB
Выбор варианта загрузки в меню GRUB

В этом примере вы должны увидеть строки root, kernel и initrd. Переместите курсор на строку, начинающуюся на "kernel" и нажмите 'e' для ее редактирования. Меню GRUB в нашей системе Fedora 8 должно принять вид в соответствии с рисунком 2.

Рисунок 2. Выбор записи ядра для изменения параметров
Выбор записи ядра для изменения параметров

Теперь переместите курсор в конец строки и добавьте пробел и цифру '3'. При желании вы можете убрать параметр 'quiet' или изменить любые другие параметры. Меню GRUB в нашей системе Fedora 8 должно принять вид в соответствии с рисунком 3.

Рисунок 3. Установка уровня выполнения (уровень 3) во время загрузки
Установка уровня выполнения (уровень 3) во время загрузки

Наконец, нажмите Enter для сохранения изменений и 'b' для загрузки операционной системы.

Примечание. Если вместо GRUB вы используете LILO или GRUB2, то хотя данная процедура будет немного отличаться, основные принципы (редактирование параметров загрузки ядра) будут теми же самыми. Изображенные на наших рисунках экраны GRUB также могут выглядеть немного иначе в других дистрибутивах или на других компьютерах. Как правило, вам всегда доступны подсказки в виде приглашений.

После того, как вы закончите работы по настройке ядра на уровне выполнения 3, вероятно, вы захотите переключиться на уровень 5. К счастью, для этого нет необходимости перезагружать компьютер. Для переключения на другой уровень можно использовать команду telinit. Чтобы проверить предыдущий и текущий уровни выполнения, используйте команду runlevel. Если первым символом вывода этой команды будет 'N', то это означает, что с момента загрузки системы уровень выполнения не изменялся. В листинге 3 приведены примеры проверки и изменения уровня выполнения.

Листинг 3. Проверка и изменение уровня выполнения
[root@pinguino ~]# runlevel
N 3
[root@pinguino ~]# telinit 5

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

Листинг 4. Проверка нового уровня выполнения
[root@pinguino ~]# runlevel
3 5

Если с помощью команды ls вы отобразите подробные сведения о команде telinit, то увидите, что на самом деле она является символической ссылкой на команду init, как показано в листинге 5.

[root@pinguino ~]# ls -l $(which telinit)
lrwxrwxrwx 1 root root 4 2008-04-01 07:50 /sbin/telinit -> init

Программа init знает о том, каким образом она была вызвана (как init или как telinit), и ведет себя соответственно. Поскольку во время загрузки команда init имеет идентификатор PID 1, то если впоследствии вы обратитесь к ней через вызов init, а не telinit, она также будет знать об этом. В этом случае она будет предполагать, что вы хотите, чтобы она вела себя так, как если бы вы осуществили вызов программы telinit. Например, для переключения на уровень выполнения 5 вместо команды telinit 5 вы можете использовать команду init 5.


Однопользовательский режим

В отличие от таких операционных систем для ПК, как DOS или Windows, Linux по своей природе является многопользовательской системой. Однако в некоторых ситуациях это может оказаться проблемой, например, когда вам необходимо восстановить главную файловую систему или базу данных, или установить и протестировать новое оборудование. Решением этой проблемы является использование уровня выполнения 1, или однопользовательского режима. Фактическая реализация работы в этом режиме зависит от дистрибутива, но обычно происходит запуск командного интерпретатора с минимальной функциональностью. Как правило, при этом отсутствует поддержка сети и запущенные демоны (либо их очень мало). В одних системах для входа в однопользовательский режим необходимо пройти аутентификацию, а в других этого не требуется, и вы сразу начинаете работу в командной оболочке с привилегиями суперпользователя (root). Однопользовательский режим может оказаться вашим спасителем, но также может разрушить систему, поэтому всегда будьте очень осторожны, когда работаете с привилегиями суперпользователя. По завершении работы в однопользовательском режиме просто перезагрузитесь в обычный многопользовательский режим.

Так же, как и в случае с обычными многопользовательскими уровнями выполнения, вы можете переключиться в однопользовательский режим, набрав команду telinit 1. Как было упомянуто в таблице 1, уровню выполнения 1 соответствуют псевдонимы 's' и 'S', поэтому вместо предыдущей команды можно использовать, например, команду telinit s.


Корректное завершение работы

Хотя для остановки работы пользователей и перехода в однопользовательский режим можно использовать команду telinit или init, такое неожиданное завершение работы может привести к потере пользовательских данных и аварийному завершению работающих служб и процессов. Более предпочтительным методом завершения работы или перезагрузки системы является команда shutdown, которая сначала посылает предупреждения всем работающим в системе пользователям и блокирует все дальнейшие входы в систему, а затем посылает сигнал init для переключения уровней выполнения. Процесс init, в свою очередь, посылает всем запущенным процессам сигнал SIGTERM, позволяя им сохранить данные и корректно завершить работу. По завершении 5 секунд (или другого определенного интервала времени) init посылает сигнал SIGKILL для принудительного завершения всех оставшихся процессов.

По умолчанию команда shutdown переключает систему на уровень выполнения 1 (однопользовательский режим). Вы можете указать опцию -h для остановки системы или опцию -r – для ее перезагрузки. В дополнение к указанному вами сообщению выводится стандартное сообщение. Можно указывать абсолютное время в формате hh:mm, а также относительное время в формате n, где n – это количество минут до выключения. Для немедленного завершения работы используйте опцию now, которая эквивалентна опции +0.

Если вы назначили отложенное завершение работы системы, и это время еще не наступило, то вы можете отменить его, нажав Ctrl-c, если команда выполняется в приоритетном режиме, или повторно запустив команду shutdown с опцией -c для отмены всех отложенных действий. В листинге 6 приведено несколько примеров использования команды shutdown и способов ее отмены.

Листинг 6. Примеры завершения работы системы
[root@pinguino ~]# shutdown 5 File system recovery needed

Broadcast message from root (pts/1) (Tue Jan  4 08:05:24 2011):

File system recovery needed
The system is going DOWN to maintenance mode in 5 minutes!
^C
Shutdown cancelled.
[root@pinguino ~]# shutdown -r 10 Reloading updated kernel&
[1] 18784
[root@pinguino ~]#
Broadcast message from root (pts/1) (Tue Jan  4 08:05:53 2011):

Reloading updated kernel
The system is going DOWN for reboot in 10 minutes!

[root@pinguino ~]# fg
shutdown -r 10 Reloading updated kernel
^C
Shutdown cancelled.
[root@pinguino ~]# shutdown -h 23:59&
[1] 18788
[root@pinguino ~]# shutdown -c

Shutdown cancelled.
[1]+  Done                    shutdown -h 23:59

Вы, возможно, заметили, что в последнем примере не посылается сообщение с предупреждением. Это происходит потому, что сообщение посылается только тогда, когда до наступления события останется не более 15 минут, как показано в листинге 7. Также в листинге 7 продемонстрировано использование опции -t для увеличения задержки по умолчанию между сигналами SIGTERM и SIGKILL (с 5 до 60 секунд).

Листинг 7. Другой пример завершения работы
[root@pinguino ~]# date;shutdown -t60 17 Time to do backups&
Tue Jan  4 08:12:55 EST 2011
[1] 18825
[root@pinguino ~]# date
Tue Jan  4 08:14:13 EST 2011
[root@pinguino ~]#
Broadcast message from root (pts/1) (Tue Jan  4 08:14:55 2011):

Time to do backups
The system is going DOWN to maintenance mode in 15 minutes!

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

Как говорилось ранее, для завершения работы или перезагрузки системы можно использовать команду telinit (или init). В случае использования telinit пользователи не получают никаких предупреждений, а команда срабатывает немедленно, хотя задержка между сигналами SIGTERM и SIGKILL сохраняется. Если вы хотите узнать о дополнительных опциях telinit, init и shutdown, то обратитесь к соответствующим man-страницам.


Завершение работы, перезагрузка и отключение питания

Следует знать о других командах, предназначенных для завершения работы и перезагрузки системы.

  • Команда halt – остановка системы.
  • Команда poweroff – символическая ссылка на команду halt, которая останавливает систему и пытается отключить питание компьютера.
  • Команда reboot – другая символическая ссылка на команду halt, которая останавливает систему и перезагружает компьютер.

Если любая из этих команд вызывается в тот момент, когда система работает на уровне выполнения, отличном от 0 или 6, то вместо нее вызывается соответствующая команда shutdown.

Если вы хотите получить дополнительную информацию об опциях этих команд и о том, как они работают, то обратитесь к соответствующим man-страницам.


Файл /etc/inittab

Возможно, вам будет интересно, почему нажатие Ctrl-Alt-Delete в некоторых операционных системах приводит к перезагрузке, и каким образом устроены все эти уровни выполнения. Вы помните поле id в файле /etc/inittab? Так вот, в файле /etc/inittab есть еще несколько полей, а в файловой системе присутствует набор сценариев инициализации, расположенных в каталогах, таких как rc1.d или rc5.d; цифра означает уровень выполнения, на котором выполняются сценарии из соответствующей директории. В листинге 8 показано полное содержимое файла inittab в нашей операционной системе Fedora 8.

Листинг 8. Полное содержимое файла inittab в ОС Fedora 8
#
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
#
# Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
#               Modified for RHS Linux by Marc Ewing and Donnie Barnes
#

# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# When our UPS tells us power has failed, assume we have a few minutes
# of power left.  Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"


# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon

Как обычно, строки, начинающиеся с # – это комментарии. Остальные строки содержат несколько полей в следующем формате:
идентификатор_id:уровни_выполнения:действия:процесс

идентификатор id
Уникальный идентификатор, состоящий из 1-4 символов. В более ранних версиях идентификатор состоял не более чем из двух символов, поэтому часто используются только два символа.
уровни выполнения
Список уровней выполнения, на которых выполняется действие, определенное для данного идентификатора. Если уровни выполнения не указаны, то действие выполняется на всех уровнях.
действие
Одно из возможных действий, которое будет выполняться.
процесс
Процесс (может быть не указан), который должен быть запущен при выполнении действия, определенного в строке.

Некоторые действия, которые можно указать в файле /etc/inittab, перечислены в таблице 3. О других возможностях inittab вы можете узнать из man-страниц.

Таблица 3. Некоторые распространенные действия inittab
ДействиеНазначение
respawnПерезапустить процесс, если он завершается. Обычно используется для процессов getty, которые отслеживают входы в систему.
waitЗапустить процесс при переключении на заданный уровень выполнения и ждать его завершения перед запуском init.
onceЗапустить процесс при переключении на заданный уровень выполнения.
initdefaultУказывает уровень выполнения, переключение на который осуществляется после загрузки системы.
ctrlaltdelЗапустить назначенный процесс при получении процессом init сигнала SIGINT (например, при нажатии CTRL-ALT-DEL на системной консоли).

В листинге 9 показана запись для комбинации Ctrl-Alt-Delete (фрагмент листинга 8). Итак, теперь вы видите, почему нажатие комбинации Ctrl-Alt-Delete приводит к перезагрузке системы.

Листинг 9. Отслеживание нажатия Ctrl-Alt-Delete
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

Сценарии инициализации

В листинге 8 вы могли заметить несколько строк, подобных следующей:

l5:5:wait:/etc/rc.d/rc 5

В этом примере init запустит сценарий (или команду) /etc/rc.d/rc с параметром 5 в момент переключения на уровень выполнения 5. Процесс init будет ожидать завершения этой команды, и только потом будут выполняться какие-то другие действия.

Эти сценарии, используемые процессом init при запуске системы, изменении уровней выполнения или завершении работы, обычно хранятся в директории /etc/init.d или /etc/rc.d. Наборы символических ссылок, расположенных в директориях rc n.d (для каждого уровня выполнения n существует отдельная директория), управляют запуском сценариев при переключении на определенный уровень выполнения или их остановкой при выходе с этого уровня. Эти ссылки начинаются с символа K или S, за которым следуют двузначное число и имя службы, как показано в листинге 10.

Листинг 10. Сценарии инициализации
[root@pinguino ~]# find /etc -path "*rc[0-9]*.d/???au*"
/etc/rc.d/rc2.d/S27auditd
/etc/rc.d/rc2.d/K72autofs
/etc/rc.d/rc4.d/S27auditd
/etc/rc.d/rc4.d/S28autofs
/etc/rc.d/rc5.d/S27auditd
/etc/rc.d/rc5.d/S28autofs
/etc/rc.d/rc0.d/K72autofs
/etc/rc.d/rc0.d/K73auditd
/etc/rc.d/rc6.d/K72autofs
/etc/rc.d/rc6.d/K73auditd
/etc/rc.d/rc1.d/K72autofs
/etc/rc.d/rc1.d/K73auditd
/etc/rc.d/rc3.d/S27auditd
/etc/rc.d/rc3.d/S28autofs
[root@pinguino ~]# cd /etc/rc.d/rc5.d
[root@pinguino rc5.d]# ls -l ???a*
lrwxrwxrwx 1 root root 16 2008-04-07 11:29 S27auditd -> ../init.d/auditd
lrwxrwxrwx 1 root root 16 2008-04-01 07:51 S28autofs -> ../init.d/autofs
lrwxrwxrwx 1 root root 15 2008-04-01 14:03 S44acpid -> ../init.d/acpid
lrwxrwxrwx 1 root root 13 2008-04-01 07:50 S95atd -> ../init.d/atd
lrwxrwxrwx 1 root root 22 2008-04-01 07:54 S96avahi-daemon -> ../init.d/avahi-daemon
lrwxrwxrwx 1 root root 17 2008-11-17 13:40 S99anacron -> ../init.d/anacron

Здесь вы видите, что для служб audit и autofs на всех уровнях выполнения имеются записи K nn, а записи S nn – на уровнях выполнения 3 и 5. Символ S означает, что служба должна быть запущена при переключении на уровень выполнения, а символ K означает, что она должна быть остановлена. Значение nn в имени ссылки определяет приоритетный порядок, в котором службы должны запускаться или останавливаться. В этом примере служба audit запускается раньше службы autofs, а останавливается позже.

Для получения дополнительной информации обратитесь к man-страницам init и inittab.


Init и Upstart

Как видите, в основе традиционного метода загрузки Linux-системы лежит процесс init операционной системы UNIX System V. В этом случае сначала загружается RAM-диск (initrd), а затем управление передается программе init, которая обычно устанавливается в составе пакета sysvinit. Затем программа init запускает в заранее определенном порядке ряд сценариев для загрузки системы. Если в процессе загрузки какие-то компоненты оказываются недоступными, то процесс init ждет, пока они станут доступными. Это корректно работает на компьютерах, в момент загрузки которых все устройства уже подключены и известны операционной системе. Однако при использовании современных компьютеров с поддержкой технологии "горячей замены", сетевых файловых систем и даже некоторых сетевых плат, которые могут быть недоступны в момент загрузки, могут возникнуть новые проблемы. Конечно же, ждать, пока система определит оборудование, которое может быть недоступным (относительно) долгое время, может оказаться не лучшим вариантом.

Альтернативный процесс инициализации под названием upstart был впервые представлен в 2006 году в дистрибутиве Ubuntu 6.10 (Edgy Eft). На сегодняшний день upstart вытеснил традиционный процесс init в Ubuntu и Fedora и прочих дистрибутивах Linux. Тем не менее, процесс init еще сохранился, а полная мощь upstart возможно, не реализована полностью.

В отличие от постоянных наборов сценариев инициализации, использовавшихся в более ранних дистрибутивах, подсистема upstart основана на событиях. События могут наступать при добавлении или удалении оборудования, запуске или остановке заданий, а также в результате работы других системных процессов. События используются для запуска задач или служб, вместе известных как задания. Так, например, подключение USB-накопителя может заставить службу udev послать системе событие block-device-added, которое приведет к запуску определенной задачи для проверки файла и монтирования файловой системы накопителя (если это возможно). Другим примером может являться Web-сервер Apache, запускающийся только в том случае, если доступны сетевое подключение и все файловые ресурсы.

Программа инициализации upstart замещает процесс /sbin/init. Задания upstart определены в директории /etc/init и ее поддиректориях. В настоящее время подсистема upstart обрабатывает файл /etc/inittab и сценарии инициализации System V. В таких дистрибутивах, как последние выпуски Fedora, файл /etc/inittab, вероятно, содержит только запись с идентификатором id для действия initdefault. В новейших дистрибутивах Ubuntu по умолчанию файл /etc/inittab отсутствует, хотя вы можете создать его, если захотите определить уровень выполнения по умолчанию.

Также в подсистеме upstart имеется команда initctl, которая позволяет взаимодействовать с демоном инициализации upstart. Это позволяет запускать или останавливать задания, выводить список заданий, получать их статусы, генерировать события, перезапускать процесс инициализации и так далее. В листинге 11 показано, как использовать initctl для получения списка заданий upstart в операционной системе Fedora 13.

Листинг 11. Взаимодействие с демоном инициализации upstart с помощью initctl
[ian@echidna ~]$ initctl list
rc stop/waiting
tty (/dev/tty3) start/running, process 1486
tty (/dev/tty2) start/running, process 1484
tty (/dev/tty6) start/running, process 1492
tty (/dev/tty5) start/running, process 1490
tty (/dev/tty4) start/running, process 1488
plymouth-shutdown stop/waiting
control-alt-delete stop/waiting
system-setup-keyboard start/running, process 1000
readahead-collector stop/waiting
vpnc-cleanup stop/waiting
quit-plymouth stop/waiting
rcS stop/waiting
prefdm start/running, process 1479
init-system-dbus stop/waiting
ck-log-system-restart stop/waiting
readahead stop/waiting
ck-log-system-start stop/waiting
start-ttys stop/waiting
readahead-disable-services stop/waiting
ck-log-system-stop stop/waiting
rcS-sulogin stop/waiting
serial stop/waiting

Чтобы узнать больше о подсистеме upstart, обратитесь к разделу Ресурсы.

На этом наш обзор уровней выполнения, остановки и перезагрузки операционной системы Linux завершен.

Ресурсы

Научиться

  • Оригинал статьи: Learn Linux, 101: Runlevels, shutdown, and reboot (EN).
  • На Web-сайте программы сертификации LPIC (EN) вы найдете подробные цели, списки задач и примерные вопросы всех трех уровней сертификации на администратора Linux-систем профессионального института Linux. В частности, на этом сайте представлены цели экзаменов LPI 101 и LPI 102 по состоянию на апрель 2009 года. Всегда обращайтесь к Web-сайту программы сертификации LPIC, чтобы узнать последние цели.
  • Просмотрите всю серию статей для подготовки к экзаменам института LPI (EN) на сайте developerWorks, основанных на предыдущих целях, определенных до апреля 2009 года, чтобы изучить основы администрирования Linux и подготовиться к экзаменам для получения сертификата администратора Linux.
  • Руководство Linux BootPrompt-HowTo (EN) поможет вам разобраться с загрузочными параметрами.
  • Для получения дополнительной информации о подсистеме upstart прочитайте обзор подсистемы upstart (EN).

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



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

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=769035
ArticleTitle=Изучаем Linux, 101: Уровни выполнения, выключение и перезагрузка
publish-date=11012011