sonyps4.ru

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

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

Синтаксис команды shutdown

П режде чем увидеть использование команды shutdown , давайте сначала рассмотрим ее синтаксис. shutdown
  • options: вы можете указать, хотите ли вы остановить, выключить питание, перезагрузить и т. д.
  • time: вы можете указать, когда выполнять выключение
  • message: вы можете отправить пользовательское сообщение всем зарегистрированным пользователям

Примечание

Команда shutdown нуждается в привилегиях суперпользователя. Следовательно, вы должны либо быть root, либо запустить команду с sudo.

5 практических примеров команды shutdown в Linux

Теперь, когда вы знаете синтаксис команды shutdown, давайте посмотрим, как ее использовать.

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

Sudo shutdown Shutdown scheduled for Mon 2018-11-19 23:46:21 UTC, use "shutdown -c" to cancel.

Ничего не подозревающие пользователи Linux ожидают, что команда shutdown немедленно отключит систему, но когда они увидят такое сообщение, как отметка времени в UTC, они часто путаются.

1. Немедленное выключение системы.

Вам не всегда приходится ждать минуту, чтобы система отключилась. Вы можете немедленно завершить свою систему, указав запланированное время +0 или now .

Sudo shutdown now

2. Запланируйте выключение системы

Вы можете запланировать остановку в будущем, указав аргумент времени либо в формате + t, либо в формате hh: mm.

Например, если вы хотите завершить работу системы через 20 минут, вы можете использовать эту команду:

Sudo shutdown +20

Если вы хотите завершить работу системы в 3 часа дня, вы можете использовать ее следующим образом:

Sudo shutdown 15:00

Излишне говорить, что контрольное время и часовой пояс – это системное время.

Примечание

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

3. Перезагрузка системы командой shutdown

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

Чтобы перезагрузить систему с помощью команды shutdown, используйте параметр -r.

Sudo shutdown -r

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

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

Вы можете запланировать перезагрузку так же, как и при выключении.

Sudo shutdown -r +45

Вы также можете сразу перезагрузить систему командой shutdown:

Sudo shutdown -r now

4. Передача пользовательского сообщения

Если вы работаете в многопользовательской среде, и в систему входит несколько пользователей, вы можете отправить им собственное широковещательное сообщение с командой shutdown.

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

Sudo shutdown 15:00 "Система будет остановлена для обновления оборудования, пожалуйста, сохраните свою работу"

Вы можете использовать команду shutdown с опцией -k, чтобы инициировать «фальшивое завершение». Он не выключит систему, но широковещательное сообщение будет отправлено всем зарегистрированным пользователям.

5. Отменить запланированное выключение

Если вы запланировали выключение, вам не обязательно жить с ним. Вы всегда можете отменить выключение с помощью опции -c.

Sudo shutdown -c

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

Sudo shutdown -c "запланированное выключение было отменено"

Halt vs Power off

Halt (опция -H): завершает все процессы и завершает работу ЦПУ,
Power off (опция -P): Очень похоже на остановку, но также выключает сам блок.

Исторически ранее компьютеры использовали для остановки системы, а затем печатали сообщение, подобное «теперь нормально выключите», а затем компьютеры были отключены с помощью физических переключателей.

В эти дни, прекращение должно автоматически отключить питание системы благодаря поддержки ACPI.

Это были наиболее распространенные и наиболее полезные примеры команды shutdown в Linux. Надеюсь, вы узнали, как отключить систему 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 через терминал. Если вас застигнет врасплох опечатка или зависание компьютера, вы знаете что делать.

Проблема
Только посмотрите, сколько существует способов выключения и перезагруз ки: 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.

Abstract: описание видов ребута, рассказ про sysrq, ipt_SYSRQ, ipmi, psu.

Как перезагрузить сервер? - Это вопрос, который обычно задают ну очень начинающим пользователям, которые путаются между halt, shutdown -r, reboot, init 6 и т.д.

Опытный администратор уточнит вопрос: «а что с сервером не так?» Разные виды отказов серверов требуют разных видов ребута - и неверно выбранный вариант приведёт к тяжелейшим последствиям, из которых визит в веб-морду IPMI/DRAC/iLO с целью «доперезагрузить» будет самым лёгким. Самым тяжёлым в моей личной практике была командировка эникейщика в соседний город. С целью «нажать ребут» на одиноко стоящем сервере.

В этой статье: что мешает серверу перезагрузиться и как ему помочь.

Начнём с теории ребута.

При выключении или перезагрузке сервера менеджер инициализации (в большинстве современных дистрибутивов - systemd, в эксцентричной Ubuntu 14.04 до сих пор upstart, в архаичном хламе - sysv-init) в определённом порядке посылает всем демонам команду «выключись». И большинство демонов (например, СУБД, вроде mysql) знают, как выключаться правильно. Например, закончить все транзакции, сохранить все несохранённые данные на диск и т.д. Для in-memory СУБД, наподобие redis, это и вовсе может быть критичным: не сохранил - потерял.

Старые системы иницализации ждали неограниченно долго каждый из инит-скриптов. Например, если «шутник» добавил вам в «stop» веточку «sleep 3600», то ваш сервер будет перезагружаться час с хвостиком. А если там цифра поболе, или просто программа, которая не хочет завершаться, то и ребут никогда не закончится.

Новые системы инициализации (собственно, не стесняемся - остался только systemd) дают некий таймаут (обычно 120 или 180 секунд) на сохранение данных, после чего завершают процесс силком. Помимо остановки демонов, отмонтируются файловые системы (то есть скидываются все блочные кеши), останавливаются iscsi target"ы (тоже с скидыванием кеша), и т.д. и т.п. При том, что время шатдауна получается неопределённо долгим, оно всё таки конечно. Плюс, есть хоть какая-то надежда на правильное завершение всех демонов, скидывание файловых кешей и т. д.

Таким образом, на здоровой системе правильный ответ на вопрос «как перезагрузиться» - выполнить команду reboot. В ряде случаев - даже единственный правильный (поправка: если в графическом интерфейсе сделать «reboot», то desktop environment будет думать, что это ребут аварийный - для перезагрузки из графического режима надо использовать «reboot» в интерфейсе DE).

Что может пойти не так при «обычном ребуте»? Ну, во-первых, какой-то из процессов-демонов может начать «тупить» - см выше.

Во-вторых, может возникнуть проблема с отмонтированием файловых систем. Считается, что достаточно «убить» все процессы, и отмонтировать диск будет легко - его же никто не использует. Но, это, мягко говоря, не так. Вот потенциальные методы «прибить fs гвоздями так, чтобы не отмонтировалось:

  • fallocate /fs/swap -l 1G;mkswap /fs/swap; swapon /fs/swap
  • dd if=/dev/sda of=/fs/image; kpartx /fs/image
  • losetup --find --show /fs/image
и т.д. Вкратце: файл может быть занят не только файловой системой, но и ядром. А модуль в ядре может быть занят поиском ответов на смысл жизни и не иметь намерений освобождать ресурс.

Чем это чревато? Неотмонтированной файловой системой. Systemd в этой ситуации пытается-пытается, да и бросает (неотмонтированную файловую систему). То есть reboot в этой ситуации будет ОЧЕНЬ долгим, но всё-таки пройдёт. Но это если umount вернёт ошибку.

А бывает так, что umount не может завершить операцию из-за того, что что-то не доступно. Например, файл на nfs-сервере. Если какой-то процесс обратится к такому файлу, то его завершить нельзя (даже с помощью kill -9). И в этой ситуации "reboot" просто завесит сервер. Опять же, наиболее типовые места у systemd „прикрыты“, но вероятность наткнуться на TASK_UNINTERRUPTIBLE ("D" в ps aux) всё равно можно.
Что делать? Можно перезагрузиться без синхронизации файловых систем и завершения чего-либо reboot -f. Но он тоже может повиснуть. Про причины ниже, а пока про последствия: все процессы не остановлены и умирают мгновенно, tcp сессии не закрыты, дисковые кеши не сброшены. Однако, ядро всё-таки выполняет какие-то движения в районе ребута (и, возможно, часть кешей будет сброшена). Главное же - в процессе ребута будет задействована большая часть ядра. И это означает, что если ядру поплохело, то мы можем и не вернуться обратно.

Вторая, крайне неприятная ситуация: проблемы с файловой системой на / (в корне). Любая попытка сделать ls, grep, и даже "reboot" вызывает либо зависание консоли, либо ошибку. По той же категории проходят проблемы с libc (включая её удаление), когда на попытку "reboot" говорят о проблеме линковки и отказываются что-то делать. Или, мы достигли лимита на число pid"ов и все они в "D" стейт. или ещё какая-то гадость того же калибра, идущая по категории „серверу плохо“.

Бывает так, что на сервер осталась открыта только одна консоль (а вторая уже не открывается). Почему? Потому что кто-то что-то подхимичил с драйвером дисков. Или рейд-контроллером. Или ещё чем-то, после чего от "/" остаются только воспоминания в дисковом кеше. Это означает, что у нас есть только команды bash"а (встроенные), которые выполняются без запуска новых процессов.

Существует метод перезагрузки, который не требует выполнения каких-либо исполняемых файлов (т.е. чтения с отсутствующего диска). Это (от рута): echo b >/proc/sysrq-trigger . Файл sysrq-trigger позволяет „нажать“ любую кнопку из SysRq комбинаций (аварийные кнопки ядра). В том числе и SysRq-b, то есть аварийный „reboot“. Часто бывает так, что после нажатия enter даже не успевает появиться перевод строки - сервер уже в ребуте до того, как syscall вернулся. Это самое сильное из софтового, что есть для ребута.
Замечание: кажующееся правильным в этой ситуации „sync, reboot“, т.е. SysRq-s, SysRq-B это ошибка, т.к. после SysRq-S, ядро может попытаться начать общаться с пустым множеством, и, потенциально, упасть в панику или отломать вам последнюю из доступных консолей. Если делается аварийный ребут - он должен быть аварийным

ipt_sysrq

Это всё работает, если у вас есть консоль на сервер. А если логин виснет и открытой консоли нет? Есть модуль ipt_SYSRQ , позволяющий выполнить sysrq запросы по получению определённого сетевого пакета (точнее, по правилу iptables). Работает целиком в ядре, т.е. от FS не зависит. К нему же прилагается команда send_sysrq.

сторож для сторожа

Можно было бы подумать, что на этом „всё“, но бывают ещё более неприятные зависания. Например, зависла сетевая карта. И обычный reboot (в т.ч. через sysrq) не помогает. Вторым примером таких плохой ситуации бывает зависание enclosure, которая залипла на плохом диске и игнорирует все bus reset. Перезагрузка вроде бы всё сбрасывает, а диски недоступны.

В этом случае нам нужен power cycle (включить/выключить). Физически бегать к серверу не интересно, так что можно посмотреть на возможности современных серверов: IPMI. Это встренный микрокомпьютер, позволяющий управлять „большим“ компьютером. Он обычно называется IPMI, DRAC, iLO, etc.

Интресующая нас команда: ipmitool chassis power cycle. Она более требовательна к работоспособности системы (должны быть загружены модули ядра, сам ipmitool должен успешно запуститься, ipmi должен быть рабочим и т.д.). Но зато она позволяет передёрнуть по питанию всех. Точнее, почти всех - если у сервера есть jbod"ы, то до них эта команда не доходит. Но, всё-таки, это очень добротный и хороший ребут.

Если ядру совсем поплохело, то команду можно выполнить и удалённо (ipmitool -H ipmi.server.local chassis power cycle)

Ещё одна сложная ситуация - когда завис ipmi. Если система при этом более-менее жива, то можно „перезагрузить ipmi“: ipmitool mc reboot hard . После этого можно будет сделать power cycle для шасси. Звучит странно, но я несколько раз в жизни „вытаскивал“ сервер в нормальный ребут именно такой последовательностью. (После mc reboot hard надо дать пару минут на загрузку BMC ).

Следующая точка „боли“ - это зависающие блоки питания. Да, такое бывает. Баги в прошивке блоков питания исправляют, их нужно прошивать . Разумеется, любые мягкие ребуты (такие как ipmi power cycle) в этой ситуации не работают. Нужно либо физически тыкать кабель, либо передёргивать питание удалённо. В этой ситуации помогает IP-розетка.

Выглядит это примерно так (фрагмент панели управления для servers.com/servers.ru):

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

Буферы файловых систем 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 указание перейти на кон­кретный уровень выполнения. Например, команда



Загрузка...