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

Проблема
Только посмотрите, сколько существует способов выключения и перезагруз ки: shutdown, halt, init 0, poweroff, Ctrl+Alt+Delete... Каким из них лучше пользо ваться?
Решение
Выбор не столь существенен; используйте тот способ, который вам больше под ходит. Следующие команды выключения могут использоваться только привиле гированным пользователем root:
# shutdown -h now
или
# poweroff
или
#halt
Выключение через шесть минут:
# shutdown -h +6
Команда shutdown рассылает оповещения всем подключенным пользователям.
Вы можете указать собственный текст:
# shutdown -h +6 "Time to stop working and start partying."
Консольные пользователи увидят следующее сообщение:
Broadcast message from root (pts/6) Wed Aug 14 13:51:24 2003
Time to stop working and start partying.
The system is going DOWN for system halt on 6 minutes!
Чтобы отменить выключение компьютера, выполните следующую команду
с правами root:
# shutdown -с
Перезагрузка выполняется командой
# shutdown -г now
или
# reboot
или нажатием Ctrl+Alt+Delete. Любой пользователь может перезагрузить ком пьютер, если только не отключить данную возможность в /etc/inittab (в разде ле 7.11 рассказано, как запретить перезагрузку или предоставить разРешениекон кретным пользователям).
Комментарий
Помните, что процесс выключения всегда должен быть контролируемым. Всем
компьютерам, в том числе и машинам с системой Linux, приходится проделать
немалый объем работы, чтобы питание можно было безопасно выключить. Сис тема должна завершить работу служб, демонтировать файловые системы и сбро сить буферы на диск.
Команды shutdown, poweroff и halt выполняются только привилегированным
пользователем root. Ограничение выглядит довольно глупо, потому что у любого
оконного менеджера и среды настольной системы имеется собственное меню вы ключения, а любой пользователь, находящийся поблизости от компьютера, мо жет нажать кнопку питания. Но такова жизнь, и с этим приходится смириться.
Возможный выход - предоставить ограниченные привилегии для выполнения ко манд выключения командой sudo. Другое Решениеосновано на создании специ альной группы пользователей, которым разрешено выключение.
См. также
shutdown(8), poweroff(8); раздел 8.20; раздел 8.21.

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

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

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

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

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

В отличие от начальной загрузки, которая осуществляется единственным способом, остановить и перезагрузить систему можно по-разному:

  • выключить питание;
  • ввести команду shutdown ;
  • использовать команды halt и reboot ;
  • изменить уровень выполнения демона init с помощью команды telinit ;
  • выполнить команду poweroff , чтобы попросить систему выключить питание.

Выключение питания в Linux

Даже в системах настольных компьютеров выключение питания - не лучший спо­соб останова системы. Это может привести к потере данных и повреждению файловых систем.

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

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

Команда shutdown : корректный способ останова системы

Команда shutdown - самый безопасный и корректный способ остановить или пере­загрузить систему либо вернуться в однопользовательский режим .

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

С помощью команды shutdown можно указать, что должна сделать система после выполнения команды: остановиться (-h) или перезагрузиться (-r). Можно также задать, должна ли после перезагрузки выполняться принудительная проверка дисков с помо­щью команды fsck (-F) или нет (-f). По умолчанию Linux автоматически пропускает эту проверку, если файловые системы были корректно демонтированы.

Следующая команда напоминает пользователям о запланированной процедуре сер­висного обслуживания и отключает систему в 9:30 утра:

$ shutdown -h 09:30 "Going down for scheduled maintenance. Expected downtime is 1 hour"

Можно также задать относительное время отключения. Например, приведенная ниже команда запустит процесс выключения через 15 минут:

$ shutdown -h +15 "Going down for emergency disk repair."

Команда halt : более простой способ останова

Команда halt выполняет все основные операции, необходимые для останова системы.

Обычно она вызывается командой shutdown -h , но может применяться и сама по себе. Команда регистрирует в журнальном файле факт останова, уничтожает несущест­венные процессы, выполняет системный вызов sync, дожидается завершения операций записи на диск, а затем прекращает работу ядра.

При наличии опции -n системный вызов sync подавляется. Команда halt -n ис­пользуется после восстановления корневого раздела командой fsck , чтобы ядро не мог­ло затереть исправления старыми версиями раздела, хранящимися в кэше.

Команда reboot : быстрый перезапуск

Команда reboot почти идентична команде halt . Разница лишь в том, что система перезагружается, а не останавливается. Режим перезагрузки вызывается также командой shutdown -r . Команда reboot тоже поддерживает флаг -n .

Команда telinit : изменение уровня выполнения демона init

С помощью команды telinit можно дать демону init указание перейти на кон­кретный уровень выполнения. Например, команда

Выключение компьютера - действие, с которым обычные пользователи сталкиваются чуть ли не каждый день. Если выключать сервер приходится довольно редко, то обычные, десктопные компьютеры подвержены этой операции очень даже часто. Большинство пользователей выключают 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 из командной строчки. Сделать это можно различными способами, их то мы и рассмотрим.

Все ниже перечисленные команды надо исполнять из под пользователя root.

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

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

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

Для завершения работы системы служат команды halt и poweroff. Первоначальная команда завершает работу системы, но не выключает ее питание. Вы увидите сообщение «System is halted», указывающее о возможности выключения питания. Данная команда предназначена для старых компьютеров, не поддерживающих наращенное управление питанием. Вторая (poweroff) завершает работу системы (множество элементов, находящихся в отношениях и связях друг с другом, которое образует определённую целостность, единство ) и выключает ее питание.

Выключение Linux с помощью halt

Команда идентична команде reboot по своим действиям, отличалка в том, что команда halt выключает систему. Также компьютер можно выключить выполнив бригаду:

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

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

Выключение Linux с помощью poweroff

Команда poweroff схожа команде halt, кроме того, что после остановки системы посылается специальный запрос системе управления кормлением на отключение питания, что позволяет дистанционно отключать системы. А также можно использовать:

Выключение Linux с помощью telinit 0

С помощю этой команды можно задать демону init перейти на некоторый уровень выполнения, а именно цифра 0 говорит о том что нужно прейти на 0-ой уровеь (остановка системы). Бригада telinit не поддерживает задание паузы и вывода предупреждающих сообщений. Обычно используется при испытанию изменений внесеных в файл inittab.

Выключить Linux из командной строки без sudo

Возможно через dbus и ConsoleKit. Им можно управлять через dbus. Только вот его вроде выпиливают теперь повсюду.

ConsoleKit — это такой демон, обслуживащий пользовательские сессии.

Если у тебя systemd, то фокус-покус не прокатит. Может заглянут знатоки и подскажут, как это сделать через logind.

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

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