Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Акуленок_часть1.doc
Скачиваний:
42
Добавлен:
13.11.2019
Размер:
1.43 Mб
Скачать

6.2. Процесс rc

Одной из наиболее важных в файле /etc/inittab точек входа является файл настройки /etc/rc – системный инициализационный процесс shell для выполнения команд, хранящихся в нем.

Процесс, в рамках которого выполняется программа init, инициализирует интерпретатор команд shell и передает ему на выполнение rc.

Обычно имеется несколько процедур /etc/rc[0–6]. Они маркируются числами от 0 до 6 и соответствуют уровням, на которые переходит операционная система.

/etc/rc0 – выполняет командные процедуры по останову операционной системы и переводу ее на уровень 0.

/etc/rc1 – выполняет командные процедуры по переводу системы на уровень 1 (уровень администратора или однопользовательский режим работы). Процесс init запускает командную shell–процедуру rc1, которая, в свою очередь, читает и последовательно выполняет командные процедуры из каталога rc1.d, где каждый командный файл обозначен с префиксом «S» или «К», что означает для старта (s) или для останова (к) соответствующих процессов они предназначены. Может быть указан также относительный порядковый номер для останавливающего или запускающего процессы задания.

/etc/rc2 – командная процедура действует по сходному с rc1 алгоритму, но предназначена для перевода системы на уровень 2 (т.е. многопользовательский режим работы). Она запускает все основные процессы и демоны, стартовые процедуры, которые расположены в каталоге rc2.d.

/etc/rc3 – командная процедура запускает все сетевые процессы, связанные с обслуживанием удаленных файловых систем nfs (Network File System) и rfs(Remote File System).

6.2.1. Сценарии запуска системы Solaris

D OS Solars скрипты запуска системы, то есть те скрипты, которые запускают и останавливают отдельные приложения, расположены в каталогах /etc/rcN.d. Имена файлов в каталогах имеют вид KnnNAME или SnnNAME, где nn – это целое положительное число, а NAME – имя приложения (обычно – демона).

Файлы, начинающиеся с буквы S (start), – это скрипты для запуска приложения, файлы, начинающиеся с K (kill) – для завершения работы приложения. Номер nn определяет порядок запуска скриптов – вначале запускаются те, что имеют меньший порядковый номер.

При переходе в тот или иной режим работы системы сначала выполняются скрипты останова приложений, а затем – скрипты запуска приложений того режима, в который происходит переход. При старте системы, естественно, выполняются скрипты запуска приложений режима initdefault.

То, какие именно скрипты запускать, описано в файле /etc/rcN (N может принимать значения от 0 до 6 и s), который, собственно, и вызывается процессом init. Файлы /etc/rcN являются символическими ссылками на файлы /sbin/rcN.

Так, если initdefault =3, а каталог /etc/rc3.d содержит нижеуказанные скрипты, то первым выполнится S13kdc.master, затем S14kdc, и так все по порядку (последним будет S90samba):

$ cat /etc/rc3.d

S13kdc.master

S14kdc

S15nfs.server

S16boot.server

S34dhcp

S50apache

S76snmpdx

S77dmi

S80mipagent

S81volmgt

S89sshd

S90samba

6.3. Процесс cron

Одной из команд, выполняемых в составе системного стартового файла /etc/rc, может быть команда /etc/cron, создающая постоянный процесс, пробуждающийся периодически каждую минуту. Этот процесс просматривает записи файла /usr/lib/crontab в поисках заданий, которые должны быть выполнены.

Файл содержит шесть полей:

  • минуты (0–59);

  • часы (0–23);

  • день месяца (1–31);

  • месяц года (1–12);

  • день недели (0–6, 0 – воскресенье);

  • команда, которая должна быть выполнена.

Поля времени разделяются пробелами или знаками табуляции. В каждом из этих полей может быть:

  • значение;

  • перечень значений, разделенных запятыми;

  • границы интервала значений, разделенных дефисом.

Например:

0,15,30,45 2–23 * * * /usr/lib/atrun

где * означает любое возможное значение.

Точность времени запуска зависит от периода пробуждения постоянного процесса, выполняющего команду cron. Все действия процесса, выполняющего cron, фиксируются в учетном файле /usr/lib/cronlоg, если он существует и открыт на запись в момент выполнения этой команды.

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

/usr/lib/cron/cron.allow – список пользователей, которым разрешено выполнять команду crontab

/usr/lib/cron/cron.deny – список пользователей, которым запрещено выполнять команду crontab

Содержимое файла /usr/lib/crontab можно модифицировать в процессе работы в программе.

Например: печать даты на консоли системной, которая повторяется с интервалом в 10 мин:

0,10,20,30,40,50 * * * *date>/dev/console

Например: печать даты на консоли системной, которая повторяется по будням с 6 до 10:

0 6–10 * * 1–5 date>/dev/console

Cron дает возможность выполнять программы в наиболее свободные часы в отсутствие пользователей, проводить периодические учетные операции.