Завершение работы и выключение системы

     При выключении системы Linux необходимо выполнять некоторые процедуры. Если этого не сделать, то файловые системы и файлы могут повредиться. Это происходит по причине наличия в Linux дискового кэша, информация из которого записывается на диск только через некоторые промежутки времени. Это значительно повышает производительность системы, но также означает, что если просто выключить питание компьютера, то в дисковом кэше может находится
большое количество информации и файловая система может быть частично повреждена, так как на диск обычно сбрасывается только часть информации.

     Другой причиной для этого является мультизадачность системы, где одновременно может выполняться несколько процессов и выключение питания может быть гибельным для системы. Особенно это касается компьютеров, на которых одновременно работает несколько пользователей.  Существуют команды, предназначенные для правильного выключения системы - это shutdown(8) и halt(8), расположенные в каталоге /sbin. Есть два обычных способа их применения.

     Если система установлена на компьютере, где работает один пользователь, то обычно завершают работу всех программ, работу всех виртуальных консолей, входят в систему под пользователем root (или остаются подключенными под этим пользователем, только в этом случае нужно перейти в корневой каталог во избежание проблем с демонтированием файловых систем), затем выполняется команда halt или shutdown -h now (при желании можно установить задержку,
которая устанавливается заменой параметра now на знак '+' и числом минут, по истечении которых будет завершена работа системы) или просто halt.

     Если на копьютере, на котором установлена система, работает одновременно несколько пользователей, то возможно использование команды shutdown в следующем формате: shutdown -h +time message, где time это время, по истечении которого работа системы будет завершена, а message - сообщение, в котором объясняется причина выключения. Напpимеp, root# shutdown -h +10 'We will install a new disk.  System should > be back on-line in three hours.'

    Выполнение этой команды предупредит каждого пользователя, работающего в системе, что она будет выключена через 10 минут. Сообщение выдается на каждый терминал, где работают пользователи, включая xterm.
Broadcast message from root (ttyp0) Wed Aug 2 01:03:25 1995...
We will install a new disk. System should
be back on-line in three hours.
The system is going DOWN for system halt in 10 minutes !!

     Выдача сообщения автоматически повторяется несколько раз перед прекращением работы системы и каждый раз с более коротким интервалом. При использовании halt нельзя установить задержку, поэтому эта программа редко применяется на многопользовательских системах.  Замечание: файл /etc/inittab содержит команды, выполняющиеся при выключении системы.

     После запуска процесса прекращения работы системы, демонтируются все файловые системы (кроме системы root), завершается выполнение всех процессов и программ-демонов, затем демонтируется файловая система root и вся работа завершается. После этого выдается сообщение, в котором говорится, что можно
отключить питание. Только после этого питание компьютера может быть отключено.

     В некоторых случаях невозможно завершить этот процесс соответствующим образом. Например, при повреждении кода ядра в памяти, нарушается его работа или система зависает и просто нет возможности ввести новую команду можно только надеяться, что ничего не повредится и выключить питание. Если же неполадки не такие серьезные (например вышла из строя клавиатура), а ядро и
программа update работают нормально, то наилучшим вариантом будет подождать несколько минут, пока update(8) не сохранит на диске информацию, хранящуюся в кэш-буфере и только после этого выключить питание.

     Некоторые выключают компьютер после трехкратного выполнения команды sync(8), которая сбрасывает на диск содержимое буфера, и, после прекращения обращения к диску, выключают компьютер. Если в момент выключения работа всех программ была завершена, то эта процедура почти идентична выполнению команды shutdown. Однако, файловые системы не демонтируются, что может привести к некоторым проблемам, связанным с флагом 'clean filesystem' системы ext2fs. В
любом случае использование этого способа не рекомендуется.