Путь к LINUX

         

Разгрузка операционной системы


Теперь давайте рассмотрим, каким образом

протекает обратный процесс - разгрузка операционной системы. Вы

конечно же знаете, что выключить UNIX-машину гораздо сложнее,

чем обычный калькулятор. И соответствующий ритуал должен быть

соблюден до мельчайших деталей. В противном случае вы можете потерять

ряд файлов или развалить всю систему в целом.

Дело в том, что с целью повышения производительности

системы Linux работает с диском через кэш-систему, которая не

выполняет физическую запись на диск по мановению пальца пользователя,

а управляется собственным диспетчером, сносящим буферы записи

через определенные интервалы времени (конечно, если емкость кэша

будет исчерпана, снос данных будет осуществлен немеленно, но такая

ситуация бывает довольно редко). В результате значительно сокращаются



потери времени на обслуживание запросов к диску, но при этом возникает

опасность потери данных при внезапном выключении системы - ведь

в кэш-памяти могут оставаться не сохраненные на винчестере данные!

Но и это еще не все! Linux - это многозадачная

система, следовательно кроме пользовательских задач в памяти активно

работает несколько фоновых задач, которые также могут активно

взаимодействовать с файловой системой, коммуникационными портами,

сетевыми картами и печатающими устройствами. Если при этом приходится

делить ресурсы между несколькими пользователями, которые конкурируют

за доступ к одной и той же базе данных (например, MetalBase 5.0)

- результат внезапного выключения питания может быть сравним только

со взрывом атомной бомбы внутрикомпьютерного масштаба!

Именно поэтому вам необходимо аккуратно и

качественно организовать процесс разгрузки операционной системы.

Для этой цели в Linux предусмотрена специальная программа /bin/shutdown.

Давайте рассмотрим, как ее использовать?

Прежде всего отметим, что вызов этой программы

осуществляется при вводе клавишной комбинации "из трех пальцев"-Ctrl-Alt-Del.

Поэтому изложенный ниже материал предназначен не для ежедневного


использования, а для более глубокого понимания процесса разгрузки

и разработки собственных механизмов.

Если вы являетесь единственным пользователем

системы, то для выгрузки системы вы должны (во всяком случае,

с точки зрения теории) остановить все текущие программы, закрыть

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

как root (а если вы уже работаете как root, то во избежание неприятностей

перейдите в каталог /root ), а затем ввведите команду

shutdown -q now

Кстати, вместо now вы можете указать интервал

времени (в минутах) через который система осуществит окончательную

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

(диски Release 2 и Release 3) код команды shutdown содержит ошибку,

в результате которой таймер не работает и разгрузка осуществляется

мгновенно в любом случае, впрочем, если вы владеете UNIX-машиной

в гордом одиночестве, задержка вам вряд ли понадобится. А вот

если вы строите сервер или многопользовательскую систему - воспользуйтесь

дисками Release 4 или более поздними, в которых эта ошибка исправлена.

Вообще говоря, в многопользовательской системе

выдача команды shutdown обычно сопровождается кратким сообщением

о причине, по которой завершается работа с системой. Впрочем,

это можно и не делать, если вы не слишком уважаете своих пользователей.

В конце концов, через определенные промежутки времени, shutdown

все равно будет терроризировать пользователей сообщениями типа

: "до взрыва осталось 8 минут".

Но какие конкретно операции должна выполнить

команда shutdown? Ответ на этот вопрос хранится в файле /etc/shutdown.rc.

В любом случае, вне зависимости от наличия этого скрипт-файла

при начале разгрузки системы демонтируются все файловые системы

(кроме root) все оставшиеся "в живых" пользовательские

процессы безжалостно "убиваются" (поэтому и рекомендуется

выходить до разгрузки системы!). После того, как все операции

демонтирования успешно завершены, на консоль выдается соответствующее



сообщение. Вот только после этого вы и можете нажимать клавишу

Reset или выключатель питания.

Если же вы хотите перегрузить компьютер,

то можете воспользоваться командой reboot, которая аналогична

команде shutdown, но не останавливает систему после завершения

разгрузки, а автоматически начинает перезагрузку операционной

системы.

Иногда, как это ни прискорбно, система не

хочет корректно разгружаться. Например, в том случае, если система

запаниковала (panic mode) и пошла в разнос. Вы должны отдавать

себе отчет, что любое нажатие клавиши может привести к непредсказуемым

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

нажать на клавишу Reset. Во всяком случае, у вас остается надежда,

что программа fsck при повторной загрузке исправит (или попытается

это сделать) ошибки на диске. Если же повреждения оказались менее

серьезными (в SAG под этим подразумевается несколько ударов топором

по клавиатуре), то имеет сысл использовать команду update для

того, чтобы снести содержимое буферов на диск, и только после

этого выключать питание.

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

популярностью некое сложное заклинание, состоящее из трех команд

sync, между которыми следует дождаться мигания светодиода доступа

к винту, и лишь после этого считается позволительным выключать

питание машины. Если в этот момент у вас нет никаких активных

программ, то этот процесс, вообще-то, полностью эквивалентен команде

shutdown. Но, поскольку вы не размонтировали файловые системы,

то флажок clean filesystem для наиболее распространенной системы

ext2fs (смотри [1]) сброшен не будет, что приведет к недовольному

ворчанию fsck при повторном запуске программы.

Поэтому пользоваться подобными "открытиями"

не стоит.

В то же время не стоит огульно охаивать опыт

минувших поколений. Метод трех sync-ов ведет свое начало с тех

времен, когда солнце светило ярче, а машины работали не так быстро.

Поэтому промежуток между выполнениями трех раздельно введенных

команд был вполне достаточным, чтобы успели выполниться все операции

ввода/вывода с дисков.


Содержание раздела