Перезагружаем и выключаем компьютер из командной строки. Выключение Linux из командной строки Что делать, если все зависло полностью

Выключение компьютера - действие, с которым обычные пользователи сталкиваются чуть ли не каждый день. Если выключать сервер приходится довольно редко, то обычные, десктопные компьютеры подвержены этой операции очень даже часто. Большинство пользователей выключают linux в графическом интерфейсе системы. В окружении рабочего стола KDE это делается через главное меню, а в Gnome и Unity даже есть специальная кнопка на панели для решения этой задачи.

Но не всегда есть возможность выключить компьютер linux таким образом. Например, если окружение рабочего стола не работает, то больше ничего не остается, кроме того, чтобы выполнять выключение компьютера из командной строки. К тому же выключение компьютера linux через терминал единственно возможный способ для серверов, где нет графического интерфейса. Как вы увидите, этот способ также намного гибче обычного выключения, поскольку вы можете настроить нужное время отключения, или же выключить компьютер, дождавшись завершения работы определенной программы.

Чтобы выключить компьютер Linux используется команда shutdown. Есть также команды poweroff, halt, но они для нестандартных случаев. Обычно же хватает одной только shutdown. Также выключить linux из консоли можно с помощью сочетаний клавиш SysRq. Но сначала давайте рассмотрим синтаксис команды shutdown.

Синтаксис команды очень простой:

$ shutdown [опции] [время] [сообщение]

Опции задают параметры отключения, их мы рассмотрим ниже. Время можно задавать в формате чч:мм в 24 часовом формате. Также можно использовать запись +минуты, указывающую через сколько минут от текущего момента нужно выключить компьютер linux. Также доступна константа now, указывающая, что выключать нужно прямо сейчас.

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

Опции

  • --help - вывести справку по программе
  • -H, --halt - отключить питание, не завершая процессы и не перемонтируя файловые системы
  • -P, --poweroff - нормальное выключение
  • -k - не выполнять реальных действий, а только вывести сообщение
  • --no-wall - выключить компьютер, но не выводить сообщение
  • -c - отменить запланированное выключение linux из командной строки

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

Процесс выключения Linux

Естественно, команда shutdown linux или любая другая не самостоятельно завершает работу системы и выключает компьютер. Она всего лишь передает запрос на выключение системе инициализации, а затем ядру. А уже они выполняют ряд сложных операций по подготовке и выключению компьютера. Если кратко, то вот они:

  • Завершение процессов пользователя
  • Сигнал SIGTERM всем процессам
  • Сигнал SIGKILL всем процессам
  • Монтирование файловых систем в режиме только для чтения
  • Подготовка внешних устройств к отключению
  • Блокировка пространства пользователя, чтобы гарантировать, что ни один код пользователя больше не будет запущен
  • Завершение работы и отключение питания большинства периферических устройств
  • Отключение питания компьютера

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

А теперь перейдем к примерам.

Выключение компьютера в Linux

1. shutdown

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

sudo shutdown -h now

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

Теперь попробуем запланировать выключение компьютера linux через пять минут:

sudo shutdown -h +5 "Компьютер будет выключен через 5 минут"

Мы запланировали вывод сообщения перед выключением.

Теперь давайте отменим выключение компьютера Linux:

sudo shutdown -c

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

sudo shutdown -h 21:00

Как я уже говорил, не только команда shutdown linux умеет выключать компьютер, есть еще несколько утилит способных на это. Рассмотрим их тоже.

2. reboot

Команда reboot обычно используется для перезагрузки системы, но она также умеет выключать компьютер. Мы не будем ее подробно рассматривать, потому, что она еще проще команды shutdown. Для выключения нужно задать опцию -p:

3. halt

Эта команда тоже выключает компьютер. Только делает она это очень по-своему. Она не выполняет никаких подготовительных действий перед выключением, а просто отключает питание:

Использование halt может повредить систему

4. poweroff

Это аналог halt, делает в точности то же самое:

5. SysRq

Помните, в начале статьи, я говорил о сочетании клавиш для включения компьютера? Рассмотрим этот вопрос подробнее.

SysRq - это подсистема, реализованная на уровне ядра. Ядро обрабатывает все нажатия клавиш, а с помощью этой подсистемы, оно может принимать от пользователя команды, даже когда система полностью зависла. Основное предназначение этой подсистемы - работа с компьютером в проблемных ситуациях, например, если вы думаете что ваш компьютер заразил вирус, или компьютер завис и его нужно выключить. Для доступа к SysRq используются сочетания клавиш Alt+PrtScr+номер

Самое интересное, что мы можем выполнить безопасное выключение компьютера linux. Для этого зажмите клавиши Alt + PrtScr и поочередно нажимайте:

  • R - разблокировать клавиатуру
  • E - послать всем процессам сигнал SIGTERM
  • I - послать всем процессам сигнал SIGKILL
  • S - перенести все данные из кеша файловых систем на диск
  • U - перемонтировать файловые системы только для чтения
  • B - перезагрузить

Также вместо всего этого можно воспользоваться сочетанием клавиш Alt+PrtScr+O , в таком случае, вся процедура будет выполнена автоматически, эта команда поддерживается не всеми ядрами.

Выводы

Теперь вы знаете все что нужно, о том, как выключить Linux через терминал. Если вас застигнет врасплох ошибка или зависание компьютера, вы знаете что делать. Если остались вопросы - пишите в комментариях!

Казалось бы, что может быть проще? Всего-то - выключить или перезапустить сервер под управлением Linux. Для выключения достаточно ввести команду

Sudo shutdown -h now

Для перезагрузки

Sudo shutdown -r now

Sudo reboot

Данные мероприятия даже в техническом отношении (не касаясь сопутствующих организационных моментов) только на первый взгляд могут показаться простыми. Но опытные системные администраторы знают, что для любой ОС даже штатный и корректный перезапуск может повлечь негативные последствия. Во многом это связано с качеством предшествующих перезапуску технического обслуживания и эксплуатации. Поэтому нужно понимать, что самые обычные перезагрузка или выключение Linux. Без преувеличения являются достаточно ответственными действиями.И об этом администраторам всегда необходимо помнить.

Перезагрузка и остановка системы - почему это так важно?

ОС Linux доверяют работу, которая должна обеспечивать долговременное и надёжное функционирование сложных агрегатов, технологических установок, серверов баз данных (БД), веб-серверов и т.д.. Которыми пользуется большое количество пользователей, операторов и обслуживающего персонала. Выключение и перезапуск неизбежны для любой системы. Но данные мероприятия должны осуществляться с минимальными рисками. Как для выполняемых серверами задач, так и для пользователей.

Когда-то UNIX и Linux были довольно чувствительны перезапускам. Но с появлением высоконадёжных журналируемых файловых систем (ФС) выполнять остановку или перезапуск стало гораздо безопаснее. Однако вероятность повреждения конфигурации или самой ОС при некорректном выключении компьютера (или сервера) полностью не исключена. Например нештатное завершение работы серверов БД очень часто приводит к нарушению целостности данных и повреждению таблиц. Не важно какая при этом система управления БД (СУБД) используется для их обслуживания. Проблемы, которые возникают в Linux, как правило, довольно сложно выявляемые. Потому как архитектурные особенности самого Linux позволяют функционировать даже при наличии сложных коллизий. Но когда приходит время перезапуска ОС, то часто эти скрытые проблемы тут же проявляются. Что нередко сопровождается крахом.

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

Команда shutdown

Эта команда позволяет безопасно и технически «правильно» произвести перезапуск, остановку ОС или перевести её в однопользовательский режим. Для разных систем команда shutdown имеет различную спецификацию, касающуюся синтаксиса и опций, поэтому разумно рассмотреть её в общих чертах, затронув лишь некоторые особенности использования.

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

Характер выполняемого действия shutdown задаётся через параметры и таковыми могут быть:

  • нормальный остановка;
  • нормальный остановка с последующим автоматическим запуском (перезагрузка);
  • переход в однопользовательский режим;
  • некоторые другие сопутствующие действия (в зависимости от системы), например проверка устройств хранения командой .

В последнем случае проверка fsck может быть принудительной, т. к. по-умолчанию в современных ОС данная проверка проводится автоматически при запуске только в случае некорректного демонтирования файловых систем.

В следующей таблице приведены основные опции shutdown для некоторых систем Linux:

Система Путь R H S F
Linux /sbin/shutdown -r -h -f
Solaris /usr/sbin/shutdown -i6 -i0 -iS
HP-UX /etc/shutdown -r -h
AIX /sbin/shutdown -r -h -m

Для данной системы используются следующие обозначения: R – перезапуск, H – нормальная остановка, S – продолжение работы в однопользовательском режиме, F – запретить проверку fsck (актуально только для SUSE и Red Hat).

Для того, чтобы остановить Linux в 8:30 (например для проведения регламентных работ по техническому обслуживанию серверов) с уведомлением об этом пользователей, следует выполнить следующую команду:

$ sudo shutdown -h 08:30 "Внимание! С 08:30 до 13:00 Проводятся регламентные работы. Приносим извинения за неудобства."

Если нужно задать относительное время для остановки/перезапуска:

$ sudo shutdown -h +30 "Внимание! Проводятся регламентные работы."

Команды halt и reboot

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

При вызове halt выполняются все основные действия, необходимые для нормального выключения ОС. Так например, сначала выполняется завершение всех некритичных процессов, в журнал регистрации заносится сообщение о выключении, далее производится выполнение системного вызова sync и ожидание освобождения устройств хранения от операций записи. Затем останавливается работа системного ядра.

Одной из важных опций halt является ключ -n . Он запрещает использование системный вызов sync для того, чтобы ядро не восстанавливало «старые» образы корневого раздела, хранящиеся в его кеше. Другими словами, halt -n используется после того, как был восстановлен раздел при помощи .

Команда reboot отличается от halt лишь тем, что производит перезапуск по-умолчанию. Однако её можно использовать для выполнения некоторых полезных действий перед перезагрузкой системы. Например, можно не отправлять сообщения о предстоящей перезагрузке (стоит заметить, что далеко не всегда это бывает полезным…) пользователям используя ключ —no-wall . Если необходимо просто внести запись о событии в файл /var/log/wtmp (этот файл регистрирует все события входа и выхода в ОС), то нужно воспользоваться ключом -w (или —wtmp-only ), при этом перезагрузки не произойдёт. Для выполнения перезагрузки без внесения записей в файл /var/log/wtmp , существует ключ -d (или —no-wtmp ). Также при помощи команды reboot возможно выполнять остановку системы и выключение машины, используя ключи —halt и -p (—poweroff ) соответственно. Для принудительной и немедленной перезагрузки используется ключ -f (—force) . В большинстве систем все ключи, описанные для команды reboot применяются и для команды halt с тем же значением.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter .

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

Сегодня мы рассмотрим такие вопросы, как команда перезагрузки Linux из консоли, перезагрузка удаленно, и непосредственно перезагрузка в графическом интерфейсе. Начнем, пожалуй, с обычной перезагрузки системы.

Здесь, как говорится, что может быть проще. Рассмотрим сначала перезагрузку в Ubuntu Unity. Достаточно нажать на кнопку с шестеренкой в правом верхнем углу экрана, и выбрать пункт Выключение :

Затем в открывшимся окне кликнуть по пункту :

В окружении рабочего стола Gnome, все очень похоже на Unity, а в KDE нужно открыть главное меню, перейти на вкладку выход , и выбрать пункт перезагрузить :

Затем подтвердить перезагрузку.

А здесь уже простор намного шире, существует около десятка команд, которыми можно перезагрузить Linux. Одним нужны root привилегии, другим нет, одни выглядят просто и легко запоминаются, а другие длинные и сложные. Дальше мы рассмотрим их все.

Первая команда перезагрузки Linux, самая распространенная и самая простая:

Как видите, утилите нужны права суперпользователя. После нажатия Enter компьютер сразу уйдет в перезагрузку.

Утилита shutdown, которая используется для выключения тоже позволяет перезагрузить компьютер для этого нужно передать ей параметр -r. Плюс к тому же можно указать время перезагрузки. Сейчас - 0 или now, через одну минуту +1 через две - +2 и т д:

sudo shutdown -r +1

В системах инициализации совместимых с Init Scripts, существовали уровни загрузки системы - 0,1,2,3,4,5,6, уровень 0 - означал выключение, 6 перезагрузку, остальные режимы работы системы нас сейчас не интересуют. Переключаться между уровнями можно командой init. Только опять же нужны права суперпользователя. Таким образом:

Служба системных сообщений dbus тоже умеет перезагружать компьютер:

/usr/bin/dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

Тут уже не нужны права суперпользователя. Это были обычные способы перезагрузки Linux, но есть еще один, нестандартный или даже два. Это магические SysRq клавиши. Ядро Linux отслеживает нажатие определенных сочетаний клавиш, и в ответ на них выполняет нужные действия. Сначала включаем поддержку sysrq:

echo 1 > /proc/sys/kernel/sysrq

Лучше это сделать заблаговременно, так как этот способ полезен когда система зависла и ни на что не реагирует:

nano /etc/sysctl.conf

kernel.sysrq = 1

Для активации SysRq сочетания зажмите Alt + SysRq и нажмите код клавиши. Для нормальной перезагрузки рекомендуется использовать следующую последовательность: R E I S U B , клавиши нажимать в той же последовательности с интервалом приблизительно секунду.

  • R - возвращает управление клавиатурой если Х сервер был завершен некорректно;
  • E - ядро посылает всем процессам, кроме init сигнал SIGTERM;
  • I - отправляет всем процессам, кроме init сигнал SIGKILL;
  • S - ядро проводит синхронизацию файловых систем, все данные из кэша переносятся на жесткий диск;
  • U - перемонтирует все файловые системы в режим только чтение;
  • B - немедленная перезагрузка, без синхронизации, и дополнительных приготовлений.

Перед перезагрузкой система ожидает завершения всех процессов, останавливает все сервисы, отключает и монтирует в режиме только чтения файловые системы. Это мы и делаем, нажимая последовательно эти сочетания клавиш. Но если вам нужно перезагрузить систему сейчас не дожидаясь отключения всех процессов, например, сервер, можно сразу отправить сигнал B. Вот так: Alt + SysRq + B .

SysRq можно задействовать и без сочетаний клавиш, записав нужный код операции в файл /proc/sysrq-trigger:

echo b > /proc/sysrq-trigger

Система будет перезагружена как есть, без остановки сервисов и подготовки файловых систем, поэтому не сохраненные данные могут быть потеряны, а файловая система повреждена.

Если у вас есть доступ к серверу по ssh то можно очень просто удаленно перезагрузить linux с помощью одной из выше приведенных команд, например:

ssh [email protected] /sbin/reboot

Только опять же для этой операции нужно иметь права root на удаленном сервере.

Выводы

Теперь вы знаете как выполняется перезагрузка linux, вы даже знаете и как перезагрузить сервер по ssh. Если у вас остались вопросы, спрашивайте в комментариях!

Похожие записи:


То SysRq может выручить в самых, казалось бы, безвыходных ситуациях, если, конечно, ядро не в «панике», о чём обычно свидетельствуют хаотически мигающие светодиоды клавиатуры . Интересно? Тогда читаем дальше.

Клавиша SysRq появилась задолго до того, как виндоводы начали делать скриншоты . Первоначально по замыслу IBM клавиша SysRq предназначалась для переключения между приложениями без прекращения их работы. Но это уже история. Линуксоиды же приспособили SysRq, чтобы давать пользователю экстренный доступ к ядру. Но и тут не всё просто. Дело в том, что для совместимости с Windows в линуксных графических средах одиночная клавиша SysRq работает, как PrintScreen, а сочетание Alt+SysRq, рекомендуемое в учебниках по консоли, так же, как и в Windows, тупо помещает картинку активного окна в буфер . Поэтому в оконных Линуксах клавиши SysRq ...тоже нет! Вместо этой клавиши в линуксных графических средах употребляется волшебное сочетание Alt+Ctrl+SysRq+латинская буква/цифра, существенно увеличивающее вашу власть над машиной.

M – выводит объём занятой памяти . В Ubuntu работает, если вы предварительно установите высокий уровень подробности вывода.

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

E – аварийно прекращает работу всех процессов, кроме init.

I – убивает все процессы, включая init.

T – выводит список задач в консоль.

S – cинхронизирует все файловые системы , записывая все буферизованные данные на жесткий диск.

R – принудительно возвращает клавиатуру в рабочее состояние. При этом ядро начинает работать с клавиатурой напрямую, минуя X-сервер, и только в кодах ASCII.

T – выводит список процессов. Опять же работает только при высоком уровне подробности вывода.

P – дамп регистров процессора . Запрос может быть интересен тем, кто занимается отладкой ПО.

Q – выводит события хард-таймеров. Работает, если установлен высокий уровень подробности вывода.

O – срочно выключает компьютер.

B – перезагружает компьютер . Правда, сообщают, что при ядре 3.8.0-25 происходит не перезагрузка, а выключение. Но сам я не проверял.

U – перемонтирует все файловые системы в режим «только чтение».

V – восстанавливает фреймбуфер консоли. Допустим, вы просматриваете в виртуальной консоли какой-нибудь видеоролик (да-да, Линукс, в отличие от Windows, позволяет и это), а вам срочно нужно вспомнить, что вы делали в консоли до запуска ролика. Команда восстановит фреймбуфер консоли. Вообще же следовало бы рассказать подробнее об этой занятной штуке – фреймбуфер, но не в этой статье.

W – показывает все зависшие задачи, если таковые имеются.

Z – выводит содержимое буфера трассировки работы ядра.

Итак, ВНЕЗАПНО ваш Линукс завис так, что не помогает даже перезагрузка «иксов» клавишами Alt+Del+BS. Спокойствие, только спокойствие. Ни в коем случае не спешите жать кнопку reset на корпусе компьютера. С очень высокой вероятностью вы не потеряете данные при последовательном нажатии клавиш R-E-I-S-U-B (удерживаем Alt+Ctrl+SysRq !). И знаете что? Всегда можете мгновенно выключать нормально работающий компьютер сочетанием Alt+Ctrl+SysRq+O. Если, конечно, вы закрыли свои программы. :)

Однако, думается, что опасно делать доступной волшебную SysRq, если вы пускаете других пользователей удалённо работать на вашей машине или же сами работаете с ней удалённо. Дело в том, что сигнал break, посланный с удалённой консоли, может быть интерпретирован как Alt+SysRq, со всеми вытекающими последствиями. Поэтому если вы решили дать удалённый доступ к своей машине, то на всякий случай предварительно обнулите в системном конфиге переменную kernel.sysrq. Можно также написать на баше простенький скрипт для этого и даже прикрутить к нему кнопку на рабочем столе, чтобы каждый раз не заморачиваться редактированием файла управления системным конфигом. Успехов!

Статьи по теме