ГЛАВА 3 УПРАВЛЕНИЕ СОСТОЯНИЕМ СИСТЕМЫ СОДЕРЖАНИЕ ВВЕДЕНИЕ Общие указания по управлению уровнями Ведение журнала Административные каталоги и файлы Подкаталоги корневого каталога Важные системные файлы УРОВНИ ВЫПОЛНЕНИЯ Общие сведения Как процесс init управляет состояниями системы Как происходит переход в многопользовательский режим Включение Инициализация Подготовка к смене уровня выполнения Жизненный цикл системы Изменение уровня выполнения Каталоги уровней выполнения Переход в однопользовательский режим Уровень выполнения 3 Выключение системы ВВЕДЕНИЕ В этой главе рассматриваются ежедневные действия администратора системы. Общие указания по управлению системой. Как сочетать потребности обслуживания системы и интересы пользователей; рекомендации по ве- дению журнала системы; список важных системных каталогов и файлов. Уровни функционирования системы. Определение уровней выполнения; управление уровнями. Общие указания по управлению уровнями Для выполнения многих административных работ приходится перево- дить систему из многопользовательского режима на некоторый дру- гой уровень выполнения (см. ниже обсуждение различных уровней функционирования системы). Это означает, что для обычных поль- зователей доступ к системе закрывается. Перед выходом из много- пользовательского режима пользователей просят выйти из системы. Такого рода работы следует выполнять в часы, когда это в наи- меньшей степени затрагивает интересы пользователей. Иногда возникают ситуации, когда систему приходится выключать, ничего или почти ничего не сообщая пользователям. Постарайтесь, тем не менее, использовать все возможности для того, чтобы пре- дупредить их о событиях, которые могут повлиять на их работу в системе. Если система временно закрывается для пользователей, то сообщите им, когда она снова будет доступна. Для того чтобы информировать пользователей о предстоящих изменениях в аппарат- ном или программном обеспечении, а также правил работы или ка- ких-либо процедур, используйте файлы новостей (/etc/news/назва- ние) или Сообщение дня. Перед выполнением любой работы, которая требует вывода системы из многопользовательского режима, Вы обязаны позаботиться о вы- полнении следующих условий и подготовительных действий. 1. По возможности планируйте работы, затрагивающие состояние системы, на часы наименее активной работы. Используйте файл сообщения дня (/etc/motd) для предупреждения пользо- вателей о предстоящих административных работах. 2. Прежде чем производить какие-либо действия, которые могут повлиять на работу пользователей, проверьте, кто в данный момент находится в системе. Используйте для этого команды /etc/whodo и /bin/whodo. 3. Если в системе кто-то работает, то заблаговременно пре- дупредите пользователей о предстоящем изменении ее состо- яния или о действиях по обслуживанию. Непосредственно пе- ред выполнением этих действий пошлите при помощи команды /etc/wall сообщение всем пользователям о том, что систе- ма будет выключена через такое-то время. Предоставьте пользователям разумное время, для того чтобы они могли свернуть выполняемую работу и выйти из системы до ее вык- лючения. Ведение журнала Для многопользовательских систем настоятельно рекомендуется вести полную запись всех существенных действий по обслуживанию. Журнал системы может оказаться неоценимым подспорьем при выяс- нении причин каких-либо неполадок в ее работе, или если требу- ется оценить рабочие характеристики системы за определенный промежуток времени. Перечислим ряд моментов, которые следует фиксировать в журнале: записи о профилактическом обслуживании (даты и выполненные действия) распечатки сообщений об ошибках и результаты диагностических программ изменения аппаратной и программной конфигурации (даты и вы- полненные действия) Форма ведения системного журнала и характер записей в нем долж- ны иметь определенную логическую структуру. Журнал системы - это дневник, который следует регулярно заполнять. В конечном счете - степень значимости и способ ведения журнала определяет- ся характером использования Вашей системы. Административные каталоги и файлы В этом разделе дается краткое описание каталогов и файлов, наи- более часто используемых администратором. Подробнее о назначе- нии и содержании этих каталогов и файлов см. в Приложении A. Дополнительную информацию о форматах системных файлов можно по- лучить в разд. 4 Справочника программиста системы UNIX V. Подкаталоги корневого каталога Список каталогов корневой файловой системы (/): bck Используется для монтирования ранее сохранен- ных файловых систем с целью восстановления файлов. bin Содержит общеупотребительные команды. dev Содержит специальные файлы, которые определя- ют все имеющиеся в системе устройства. etc Содержит административные программы и таблицы. install На этот каталог из меню администратора монти- руются пакеты утилит для установки и удаления файловых систем. lib Содержит общеупотребительные библиотеки. lost+found Используется утилитой fsck(1M) для сохранения обнаруженных ею утерянных файлов. mnt Используется для временного монтирования фай- ловых систем при восстановлении операционной системы с гибких дисков. save Используется пакетом меню администратора для записи данных на дискеты. tmp Используется для хранения временных файлов. usr Используется для монтирования файловой систе- мы /usr (описание этой файловой системы см. в гл. 5). Важные системные файлы Список наиболее важных файлов и каталогов, используемых в адми- нистративной деятельности /etc/checklist В этом файле задается подразумеваемый список устройств файловой системы, которые должны проверяться командой /etc/fsck. /etc/fstab В этом файле перечисляются файловые системы, которые монтируются по команде /etc/mountall и удаленные файловые системы, монтируемые по команде /etc/rmountall. /etc/gettydefs Файл содержит информацию, по которой команда /etc/getty устанавливает скорость передачи данных и характеристики терминальных линий. /etc/group В этом файле содержатся описания всех групп данной системы. /etc/init.d Каталог; содержит выполняемые файлы, которые используются при переходе на все возможные системные уровни выполнения. На эти файлы ссылаются файлы, имена которых начинаются с букв S(запуск) и К(уничтожение) каталогов /etc/rcn.d, где n - уровень выполнения. /etc/inittab Файл; содержит инструкции, которые определя- ют, какие процессы создаются или терминируют- ся по команде инициализации /etc/init для каждого уровня. /etc/motd Файл; содержит краткое сообщение дня, распе- чатываемое при выполнении профайла /etc/pro- file. /etc/passwd Файл; содержит сведения обо всех пользовате- лях системы. /etc/profile Файл; содержит стандартное (подразумеваемое) окружение для всех пользователей. /etc/rc0 Файл вызывается командой /etc/shutdown и вы- полняет shell-процедуры из каталогов /etc/ rc0.d и /etc/shutdown.d, предназначенные для перевода системы на уровень выполнения 0. /etc/rc0.d Каталог; содержит файлы, выполняемые процеду- рой /etc/rc0 для перевода системы на уровень выполнения 0. Файлы этого каталога ссылаются на файлы каталога /etc/init.d. Они начинаются с букв К или S. Буква К означает, что при пе- реходе на уровни 0, 5 или 6 процесс следует остановить, а S - что процесс нужно запус- тить. /etc/rc2 Файл вызывается командой /etc/init и выполня- ет shell-процедуры в каталогах /etc/rc2.d и /etc/rc.d для перевода системы на уровень вы- полнения 2. /etc/rc2.d Каталог, содержащий файлы, которые выполняют- ся процедурой /etc/rc2 для перевода системы на уровни выполнения 2 и 3. Файлы этого ката- лога ссылаются на файлы каталога /etc/init.d. Они начинаются с букв К или S. Буква К озна- чает, что при переходе на уровни 2 и 3 про- цесс следует остановить, а S - что процесс нужно запустить. /etc/rc.d Каталог; содержит выполняемые файлы, реализу- ющие различные функции, необходимые для ини- циализации системы на уровень выполнения 2 Они вызываются во время работы /etc/rc2. (Файлы, которые находились в этом каталоге в модификациях системы UNIX V до 3.0, перенесе- ны в /etc/rc2.d. Данный каталог оставлен с целью обеспечения совместимости различных мо- дификаций системы.) /etc/rc3 Файл вызывается командой /etc/init и выполня- ет shell-процедуры в каталоге /etc/rc3.d для перевода системы на уровень выполнения 3 (ре- жим разделения удаленных файлов). /etc/rc3.d Каталог; содержит файлы, выполняемые процеду- рой /etc/rc3 для перевода системы на уровень выполнения 3 (режим разделения удаленных фай- лов). Файлы этого каталога ссылаются на файлы каталога /etc/init.d. Они начинаются с букв К или S. Буква К означает, что при переходе на уровень 3 процесс следует остановить, а S - что процесс нужно запустить. /etc/rstab Файл, в котором описываются ресурсы для раз- деления удаленных файлов. /etc/save.d Каталог; содержит файлы, которые используются командами меню администратора, связанными с сохранением данных на гибких дисках. /etc/shutdown Файл; содержит shell-процедуру, которая со всеми необходимыми мерами предосторожности выключает систему для выполнения операций сохранения или в связи с окончанием работы. /etc/TIMEZONE Процесс init читает этот файл для установки подразумеваемого окружения всех процессов, например, значение shell-переменной TZ (вре- менная зона). /etc/utmp Файл; содержит информацию о текущем состоянии системы. /etc/wtmp Файл; содержит историю всех входов в систему. /usr/adm/sulog Файл; содержит записи обо всех обращениях к команде su. Следует периодически проверять, не увеличился ли размер этого файла. /usr/lib/cron/log Файл; содержит историю всех действий, предп- ринятых процессом /etc/cron. Следует периоди- чески проверять, не увеличился ли размер это- го файла. /usr/lib/help/HELPLOG Файл; содержит историю всех действий, предп- ринятых процессом /etc/bin/help, если он ак- тивен в системе. /usr/lib/spell/spellhist Файл; содержит историю всех случаев, когда процесс spell не смог распознать какое-либо слово (если в системе установлена утилита spell). /usr/news Каталог; содержит файлы новостей. Следует пе- риодически просматривать этот каталог и уда- лять из него устаревшие файлы новостей. /usr/options Каталог; содержит файлы, идентифицирующие ус- тройства, которые имеются в системе. /usr/spool/cron/crontabs Каталог; содержит файлы crontab процесса cron для входов adm, root, sys, а также обычных пользовательских входов, перечисленных в фай- ле cron.allow. Более подробное описание этих файлов см. в Приложении A. УРОВНИ ВЫПОЛНЕНИЯ Общие сведения После того как Вы впервые инициализировали Ваш компьютер, Вы вместе с другими пользователями можете приступать к работе в системе. Всякий раз когда Вы включаете ее (в том числе и в пер- вый раз), система автоматически создает окружение, в котором: Файловые системы смонтированы. Запущен процесс cron, который выполняет запланированные рабо- ты по заданному расписанию. Доступны базовые сетевые функции команды uucp (если она име- ется в системе). Доступны функции накопления и планирования пакета для работы со строчными принтерами (если они имеются в системе) Запущены процессы getty для всех подключенных терминальных линий, для которых в /etc/inittab указано действие respawn. Пользователи могут входить в систему. Такое состояние системы называется многопользовательским. Его называют также состоянием 2 процесса init, поскольку вся дея- тельность по инициализации системы выполняется под управлением этого процесса. Число "2" относится к элементам специальной таблицы /etc/inittab, которую использует процесс init для ини- циализации системы в многопользовательский режим. Однако, не любое действие можно выполнять в многопользователь- ском режиме. Если бы, например, можно было размонтировать фай- ловую систему в то время как пользователи с ней работают, то это привело бы к большим потерям данных. Следовательно, для размонтирования файловых систем, а также для выполнения других административных работ, необходимо другое, однопользователь- ское состояние системы. Однопользовательскому состоянию соответствует окружение, в ко- тором доступ к системе возможен только с консоли, и смонтирова- на только корневая файловая система. Поскольку кроме Вас в сис- теме никто не работает, то можете спокойно выполнять различные действия с файловыми системами, а также работы по изменению конфигурации системы. Существуют и другие состояния системы (см. рис. 3-1). В любом случае каждое состояние или уровень выполнения четко определяют способ функционирования машины. На рис. 3-1 опреде- ляются все возможные состояния, в которых может находиться компьютер. Рис. 3-1 Состояния системы ~--------------- ---------------------------------------------- │Уровень │ Описание │ │выполнения │ │ --------------- ---------------------------------------------- │ 0 │ Питание отключено │ --------------- ---------------------------------------------- │ s или S │ Однопользовательский режим; используется для │ │ │ установки/удаления программ-утилит, сохране-│ │ │ ния/восстановления файловых систем, для про-│ | │ │ верки файловых систем. │ --------------- ---------------------------------------------- │ 2 │ Многопользовательский режим - нормальное ра- │ │ │ бочее состояние системы. По умолчанию в этом│ │ │ режиме смонтированы корневая файловая система│ │ │(/) и пользовательская файловая система (/usr)│ │ │ Непосредственно после включения система пере-│ │ │ ходит в многопользовательский режим. │ --------------- ---------------------------------------------- │ 3 │ Многопользовательский режим с разделением│ │ │ удаленных файлов используется для того, чтобы│ │ │ инициализировать систему разделения удаленных│ │ │ файлов (РУФ), подключить компьютер к сети РУФ│ │ │смонтировать удаленные ресурсы и автоматически│ │ │ предоставить собственные ресурсы (см. гл. 10,│ │ │ "Разделение удаленных файлов"). │ --------------- ---------------------------------------------- │ 4,5 │ Состояния, определяемые пользователем. │ --------------- ---------------------------------------------- │ 6 │ Останов и перезагрузка операционной системы. │ --------------- ---------------------------------------------- Как процесс init управляет состояниями системы В каждый момент времени система находится в одном из возможных состояний. Действия по поддержанию того или иного режима выпол- няются под управлением процесса init. Это самый первый общий процесс, который система создает во время загрузки. Процесс init прочитывает файл /etc/inittab, который однозначно опреде- ляет, какие процессы должны существовать на каждом уровне вы- полнения. В случае многопользовательского состояния (уровень выполнения 2) процесс init отыскивает в файле элементы, имеющие признак данного уровня выполнения (признак 2) и в каждой строке с этим признаком выполняет действия, указанные правее последнего двое- точия. Признаки соответствуют уровням выполнения (см. рис.3-1). Если Вы посмотрите на содержимое Вашего файла /etc/inittab, то Вы увидите там нечто наподобие следующего (маловероятно, что Ваш /etc/inittab будет в точности такой же, как показано ниже, поскольку его содержание зависит от конкретной конфигурации). Примечание Если /etc/inittab по ошибке был удален, то init выполнит переход в однопользовательский режим (init s). При перехо- де в однопользовательское состояние файловая система /usr останется смонтированной и процессы, не остановленные про- цессом init, будут продолжать работу. Прежде чем снова из- менить состояние системы, следует восстановить файл /etc/ inittab. is:s:initdefault: sw:2345:bootwait:/etc/swapon < /dev/console > /dev/console 2>&1 bchk:2345:bootwait:/etc/bcheckrc < /dev/console > /dev/console 2 >&1 brc::bootwait:/etc/brc 1> /dev/console 2>&1 link::wait:(rm -f /dev/syscon;ln /devsystty /dev/syscon) 1> /dev /console 2>&1 r0:0:wait:/etc/rc0 1> /dev/console 0>&1 r2:2:wait:/etc/rc2 1> /dev/console 2>&1 r3:3:wait:/etc/rc3 1> /dev/console 3>&1 pf::powerfail:/etc/powerfail 1 > /dev/console 2>&1 rb:6:wait:/etc/uadmin 2 1 > /dev/console 2>&1 /dev/console 2 > &1