Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Redaktsia_4_UP_Linux_-_Osnovnaya_chast.doc
Скачиваний:
57
Добавлен:
06.11.2018
Размер:
2.02 Mб
Скачать

2.4. Способы автоматического запуска и остановки программ

Автоматизация действий – одно из главных преимуществ ЭВМ. Следует различать два уровня автоматизации. На первом находятся действия, которые автоматически выполняются системой без участия пользователей. Второй уровень – это действия, которые хотел бы автоматизировать сам пользователь (включая администратора).

Выше уже говорилось о трех видах процессов. Демоны в своем большинстве должны стартовать при загрузке операционной системы. Исключением являются сетевые службы, запускаемые демоном inetd при попытке установления соединения с какой-нибудь сетевой службой (ftp, telnet, pop3 и т. п.). Если данные службы не работают самостоятельно в виде демонов, то сканирование возможно открытых портов заставляет inetd запускать соответствующие процессы.

После запуска самых необходимых системных процессов ядро системы запускает процесс init, который, подобно Адаму, является прародителем всех остальных процессов. Процесс init читает и исполняет собственный конфигурационный файл – /etc/inittab, листинг которого приведен на рис. 2.5. Несущественные строки из содержимого файла исключены.

# These are the default runlevels in Slackware:

# 0 = halt

# 1 = single user mode

# 2 = unused (but configured the same as runlevel 3)

# 3 = multiuser mode (default Slackware runlevel)

# 4 = X11 with KDM/GDM/XDM (session managers)

# 5 = unused (but configured the same as runlevel 3)

# 6 = reboot

# Default runlevel. (Do not set to 0 or 6)

Id:3:initdefault:

# System initialization (runs when system boots).

si:S:sysinit:/etc/rc.d/rc.S

# Script to run when going single user (runlevel 1).

su:1S:wait:/etc/rc.d/rc.K

# Script to run when going multi user.

rc:2345:wait:/etc/rc.d/rc.M

# Runlevel 0 halts the system.

l0:0:wait:/etc/rc.d/rc.0

# Runlevel 6 reboots the system.

l6:6:wait:/etc/rc.d/rc.6

# If power is back, cancel the running shutdown.

pg::powerokwait:/sbin/genpowerfail stop

# These are the standard console login getties in multiuser mode:

c1:1235:respawn:/sbin/agetty 38400 tty1 linux

c2:1235:respawn:/sbin/agetty 38400 tty2 linux

c3:1235:respawn:/sbin/agetty 38400 tty3 linux

c4:1235:respawn:/sbin/agetty 38400 tty4 linux

c5:1235:respawn:/sbin/agetty 38400 tty5 linux

c6:12345:respawn:/sbin/agetty 38400 tty6 linux

Рис. 2.5. Фрагменты содержимого файла /etc/inittab

Файл этот имеет довольно простую структуру. Как и в иных конфигурационных файлах, строки, начинающиеся символом #, являются комментариями и командой init не обрабатываются. Каждая строка, не являющаяся комментарием, состоит из 4 полей и имеет вид id:runlevel:action:process.

Здесь

  1. id (идентификатор строки) – некоторая уникальная двух- или односимвольная метка (в современных системах максимальная длина идентификатора составляет 4 символа). Так, метка si означает system initialization, su – single user, а rc – run command;

  2. runlevel (уровень выполнения) – слово, каждая буква или цифра которого соответствует определенному варианту начальной загрузки системы. Если поле уровня выполнения оставлено пустым, строка выполняется на всех уровнях;

  3. action (действие) – способ запуска процесса, обозначаемый одним из ключевых слов: respawn, boot, bootwait, ctrlaltdel, initdefault, kbrequest, off, once, ondemand, powerfail, powerokwait, powerwait, wait и sysinit. Среди этих ключевых слов чаще встречаются следующие:

  • boot – действие выполняется только один раз при загрузке системы,

  • bootwait – загрузка останавливается до завершения указанного в строке сценария,

  • initdefault – строка с этим полем запускается по умолчанию и определяет базовый уровень загрузки,

  • respawn – запуск процесса происходит в фоновом режиме, а когда процесс завершится (например, с ошибкой), его запускают снова,

  • once – запуск производится в фоновом режиме однократно,

  • wait – запуск производится интерактивно, и пока процесс не завершится, никаких других действий не выполняется,

  • ctrlaltdel – действие, которое выполняется при одновременном нажатии трех клавиш <Ctrl>+<Alt>+<Del>. Специалисты считают возможность перезагрузки небезопасной с позиций консольной атаки на систему и рекомендуют такую строку снабдить символом #,

  • sysinit – действие, выполняемое до выдачи приглашения к регистрации. Система дожидается выполнения команды, а затем продолжает загрузку;

  1. process – программа или скрипт (сценарий) для выполнения.

В ОС Linux предусмотрено несколько вариантов функционирования после начальной загрузки системы, которые называются уровнями выполнения (run levels). Всего зарезервировано десять таких уровней, при этом реально используется только половина из них. Используемые уровни выполнения нумеруются с 0 до 6 (уровень 0 используется для останова системы, а 6 – для перезагрузки):

  • уровень 1, или S (single), соответствует однопользовательскому режиму. При загрузке на первый уровень не запускается никаких служб;

  • уровень 2 соответствует многопользовательскому режиму загрузки системы с отключенной службой NFS;

  • уровень 3 обеспечивает сетевой многопользовательский режим. На этом уровне обычно работают компьютеры-серверы и рабочие места администратора;

  • уровень 4 обычно не используется и зарезервирован для будущего применения (в Slackware – это режим X–Window);

  • уровень 5 соответствует многопользовательскому графическому режиму. На этом уровне обычно функционируют рабочие станции, предоставляя пользователям возможность работать с графической подсистемой X-Window. Сеть на этом уровне настроена, но список запущенных сетевых служб может быть меньше, чем на третьем уровне, так как рабочая станция не предназначена для выполнения серверных функций.

Проанализируем основные рабочие строки в приведенном файле.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]