Linux перезагрузка из консоли

Обновлено: 04.07.2024

В статье рассмотрим, как перезагрузить (перезапустить) по SSH сервер Linux. Например, перезагрузить сервер Ubuntu, CentOS Debian и основанные на них дистрибутивы можно удаленно по SSH или подключившись к командной строке другим способом.

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

Когда требуется перезагрузка?

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

Так когда перезагружаем?

  1. Сервер завис или тормозит;
  2. Некорректно работают установленные программы;
  3. При смене операционной системы;
  4. При работе с BIOS (если есть физический доступ или его эмуляция);
  5. При использовании программ низкоуровневого копирования и восстановления данных (например, Acronis Backup).

На всякий пожарный: не перезагружайте сервер во время установки/удаления программ.

Как перезагрузить сервер через консоль?

Linux-серверы можно перезагрузить в консоли 3 простыми способами (команды shutdown, reboot и init).

Вы можете использовать любое решение для удаленного подключения к серверу. Мы остановимся на SSH.

Как перезагрузить сервер по SSH?

Все действия должны выполняться из-под пользователя root.

Подключитесь к вашему серверу под root-пользователем. Пароль суперпользователя указан в личном кабинете и письме, отправленном после активации сервера:

После ввода команды соединение с сервером будет прервано. Перезагрузка займет до 15 минут.

1. Команда shutdown -r

Это базовая команда, которая используется для перезагрузки Linux-сервера с Ubuntu.

Введите команду, и сервер будет перезагружен сразу:

Еще можно запланировать перезагрузку, введя вместо now конкретное время. Например, назначим перезагрузку сервера на 11 утра:

shutdown -r 11:00

Также можно перезагрузить сервер через небольшой промежуток времени. Например, через 5 минут:

2. Команда reboot

Также можно перезагрузить Linux-серверы с Ubuntu, Debian, CentOS или другим дистрибутивом с помощью универсальной команды reboot.

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

Введите команду, и сервер будет перезагружен сразу:

После ввода команды соединение с сервером будет прервано. Консоль оповестит: The system is going down for reboot NOW!

3. Команда init 6

Также для перезагрузки можно использовать уровни системы инициализации Init Scripts. Всего в этой системе 6 уровней: где 0 — выключение, а 6 — перезагрузка. Чтобы перейти к этому уровню, используйте команду:

Что делать, если сервер не работает после перезагрузки

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

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

Команда Reboot (перезагрузка) Linux

Когда ядро ​​обновляется, если вы не используете Ksplice или KernelCare, вам необходимо перезагрузить систему Linux. Перезагрузка системы может также потребоваться в других обстоятельствах, например, при устранении неполадок оборудования, установке приложений и т. Д. Если вы используете безголовый сервер Linux, вам нужно знать, как перезагрузить систему из командной строки.

В большинстве современных дистрибутивов Linux systemctl утилита заменяет большинство команд управления питанием, использовавшихся в старых дистрибутивах Linux, на sysvinit. reboot И shutdown команды псевдонимы systemctl и доступны в системе по причинам совместимости.

С помощью systemctl

Чтобы перезагрузить систему Linux, просто введите reboot или systemctl reboot :


Система будет перезапущена немедленно.


С помощью shutdown

При использовании с -r параметром shutdown команда выполняет перезагрузку системы:

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

Аргумент времени может иметь два разных формата. Это может быть абсолютное время в формате hh:mm и относительное время в формате, +m где m - это количество минут с этого момента.


В следующем примере будет запланирована перезагрузка системы на 10 часов утра:


В следующем примере будет запланирована перезагрузка системы через 5 минут:


Чтобы немедленно выключить вашу систему, используйте +0 ее псевдоним now :


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


Если вы запланировали перезагрузку и хотите отменить ее, запустите shutdown команду с -c параметром:


Вывод

Для перезагрузки системы Linux введите reboot свой терминал. Операционная система перезагрузится через несколько секунд.

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).

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

  • 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, позволяющий выполнить 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-розетка.

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

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

Как перезапустить или перезагрузить Linux сервер из командной строки Как перезапустить или перезагрузить Linux сервер из командной строки

Шаги по перезагрузке Linux с помощью командной строки

Перезапуск локальной операционной системы Linux

Шаг 1: откройте окно терминала

Если в вашей версии Linux используется графический интерфейс, вы можете открыть окно терминала, щелкнув правой кнопкой мыши на рабочем столе и выбрав пункт Open in terminal (Открыть в терминале).

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

Шаг 2. Используйте команду выключения

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

В окне терминала введите следующее:

sudo shutdown –r

Команда sudo указывает Linux запустить команду от имени администратора, поэтому вам может потребоваться ввести свой пароль. Ключ –r в конце указывает, что вы хотите перезапустить машину.

Альтернативный вариант: перезагрузить Linux с помощью команды reboot

В терминале введите:

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

Перезагрузить удаленный сервер Linux

Шаг 1. Откройте командную строку

Если у вас есть графический интерфейс, откройте терминал щелкнув правой кнопкой мыши на рабочем столе и выбрав пункт Open in terminal (Открыть в терминале), либо можете щелкнуть главное меню (обычно находится в нижнем левом или верхнем левом углу) и ввести terminal в строке поиска.

Если вы предпочитаете использовать сочетание клавиш, нажмите Ctrl + Alt + T./p>

Читайте также: