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

Обновлено: 01.07.2024

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

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

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

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

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

Команда shutdown

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

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

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

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

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

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

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

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

Команды halt и reboot

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

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

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

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

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

Перезагрузка Linux в графическом интерфейсе

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

reboot_ubuntu1

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

reboot_ubuntu2

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

reboot_kde

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

Перезагрузка Linux в терминале

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

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

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

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

sudo shutdown -r +1

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

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

/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

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

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

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

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

echo b > /proc/sysrq-trigger

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

Удаленная перезагрузка Linux

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

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

Выводы

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

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

Почему зависают программы и приложения?

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

Некачественное программное обеспечение (ПО), которое не было должным образом протестировано разработчиками. А также ПО сомнительного происхождения также являются частой причиной зависаний.

Аппаратная составляющая также оказывает существенное влияние на работу ОС. Например достаточный объём оперативной памяти, стабильные частоты, на которых она работает, высокоскоростная дисковая подсистема. Всё это является важным фактором, существенно снижающим вероятность зависаний.

Системы на основе Linux заслуженно и неоспоримо считаются наиболее устойчивыми к различного рода сбойным ситуациям. Ядро этих систем действительно, работает очень стабильно и способно «переваривать» нагрузки в круглосуточном режиме на протяжение очень длительного времени. Системы Windows такими показателями похвастаться не могут. Именно поэтому, управление самыми высоконагруженными серверами, где критически важна надёжная работа системы. Доверяют именно Unix/Linux.

Но, как бы ни была надёжна Linux, сбои и зависания происходят и в этой ОС. В подавляющем большинстве случаев они связаны либо с устаревшей, маломощной аппаратной составляющей, либо с нестабильным ПО. В последнем случае это касается по большей части настольных компьютеров обычный пользователей. Где используются различные графические оболочки. Что и говорить, графическая подсистема — одна из наиболее уязвимых для сбоев в ОС Linux.

Завершение зависших приложений в командной оболочке

Прежде всего необходимо знать и понимать, каким образом идентифицировать зависший процесс. Ну а дальше попытаться его завершить принудительно.
Каждому процессу в системе соответствует свой уникальный идентификатор (PID). При помощи которого система им управляет, в частности может завершить. Самым простым способом узнать PID процесса является команда pidof:

В данном случае в качестве аргумента указывается имя процесса. Для примера используется утилита psensor. Считывающая показания, предоставляемые различными провайдерами для системных датчиков: lm-sensors, hddtemp, udisks2 и т. д. Если, к примеру, замечено, что psensor не обновляет показания датчиков, т. е. предполагается, что эта утилита зависла. То завершить её можно командой kill, передав ей соответствующий PID:

Эта команда предназначена для отправки сигналов управления процессам. По-умолчанию завершает процесс. Для завершения процессов по их имени существует команда killall:

Однако, использование kill по идентификаторам процессов более корректно. К тому же команда kill более предпочтительна для крепко зависших процессов. И обладает более гибкими возможностями.

Вообще в таких случаях может быть проблематично использовать или запустить командную консоль. Поскольку она также может зависнуть. Тогда можно попытаться переключиться на параллельный сеанс комбинацией клавиш <Ctrl+Alt+FN>. Где N – номер функциональных клавиш от 1 до 12, например F1, F2, . . . F12. И уже оттуда продолжить работу с процессами.

Зависание графической оболочки в Linux

Как уже было отмечено выше, если в системе установлена и работает какая-либо из графических оболочек (GNOME, KDE, Xfce и т. д.), то это лишний повод увидеть перед собой зависшее окно какого-либо приложения, либо даже целиком некликабельный рабочий стол. В таком случае удобно воспользоваться графическим менеджером процессов и управлять ими визуально. Используя элементы интерфейса и контекстное меню процесса.


Но бывает также и так, когда рабочий стол не реагирует ни на клики мыши, ни на привязанные к нему клавиатурные комбинации. В этом случае остаётся задействовать виртуальные терминалы. Переключившись на один из них, как это указано в предыдущей главе по нажатию сочетаний клавиш <Ctrl+Alt+FN>. Стоит отметить, что при переключении на такой терминал необходимо сначала авторизоваться в системе через него. После этого можно попытаться перезапустить графическую оболочку и/или X-сервер, например для Ubuntu:

Здесь lightdm или ssdm зависит от того, какая графическая оболочка используется. В последних версиях дистрибутивов Ubuntu в основном используется композитный менеджер ssdm.

Нехватка памяти и полное зависание системы

В некоторых случаях зависание процесса может быть вызвано нехваткой памяти. Особенно когда сам процесс потребляет её слишком много, т. е. Как говорят, «сильно течёт». Иногда это не очевидно, если такой процесс выполняется в фоне, а пользователь непосредственно с ним не работает. Такие случаи выявляются по первичным признакам в виде общей «заторможенности» всей системы. Когда зависший процесс отобрал большую часть ресурса памяти. В данном случае нужно выявить такой процесс, воспользовавшись командой ps. И отсортировав все процессы по количеству используемой памяти:

Будет выведена таблица, среди столбцов которой есть столбец «%MEM», указывающий количество памяти в процентном соотношении от доступной в системе и используемой соответствующим процессом, запущенным командой, указанной в столбце «COMMAND».
К примеру, если это веб-браузер Firefox, то у него может быть много связанных с ним процессов:

Их можно разом завершить:

Но может и случиться так, что даже Linux-система может зависнуть наглухо, не реагируя ни на что. В таких случаях, как правило, само ядро продолжает работать и ему можно отдавать команды, в том числе и через клавиатуру. Таким образом, можно попытаться более-менее корректно, с наименьшими потерями выполнить ручную поэтапную перезагрузку, передавая ядру соответствующие команды через клавиатурные сочетания. Эти команды следует отдавать, нажимая следующие клавиши через каждые 3-4 секунды, при этом удерживая сочетание клавиш :

На этапах 2 и 3 стоит объективно оценивать время работы команды. Если процессов запущенно много, то и времени на их завершение и уничтожение может также потребоваться несколько больше, чем 3-4 секунды.

Заключение

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

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


Ничто не совершенно в нашем бренном мире, тем боле то что создано человеком. Человеку свойственно ошибаться в большей или меньшей степени: в жизни; в работе; при создании чего-то нового и с этим не поспоришь.

Операционные системы для компьютера разрабатываются человеком/людьми и, естественно, ни одна из ОС не совершенна, чтобы она работала безукоризненно. Порой наш компьютер ни с того, ни с сего зависает. Это может произойти из-за сбоя в системе, либо мы сами чего-то накосячили во время работы и приходится нажать и удерживать клавишу Вкл/Выкл или выдернуть кабель из эл.сети, чтобы обесточить компьютер для выключения.
С кем такое не случалось? Уверен, практически с каждым пользователем компьютера.

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

1. Принудительное выключение компьютера.

Для принудительного выключения компьютера примените одновременное нажатие клавиш на клавиатуре Ctrl+Alt+Print+O (O - латинская).


Компьютер мгновенно выключится.

2. Принудительная перезагрузка компьютера.

Для принудительной перезагрузки компьютера примените одновременное нажатие клавиш Alt+Print+B (B - латинская).


Компьютер будет перезагружен.

Вот и всё. Теперь вы знаете, как принудительно выключить/перезагрузить компьютер в случае сбоя в Linux.

30 комментариев :


>Alt+Print+B
Может все же лучше комбинацией Alt+Print+ (последовательно REISUB). Ну что б хотя бы отмонтировать файловые системы перед жестким ребутом.

Можно и Alt+Print+ (последовательно REISUB), но это дольше, да и Alt+Print+B срабатывает без проблем. Попробуйте.)


Я знаю что срабатывает сразу Alt+Print+B. Но дело в том, что при этом не происходит завершение всех процессов на этапе Alt+Print+E и I, а также отмонтирование ФС на этапе нажатия Alt+Print+U. А это в свою очередь чревато ошибками ФС. Короче, резкое Alt+Print+B - это всеравно что нажать сразу Reset на системнике, без попыток хотя бы как-то погасить деятельность ОС и отмонтировать файловые системы.

Возможно Вы правы. Но у меня ещё ни разу не было сбоев системы после принудительной перезагрузки с применением Alt+Print+B.
В тоже время что, при нажатии и удерживании кнопки Выкл, происходит отмонтирование ФС и т.д.? Но ведь все пользуются этим методом. Что в Windows, что в Linux.


>В тоже время что, при нажатии и удерживании кнопки Выкл, происходит отмонтирование ФС и т.д.?<
Я пользуюсь этим методом крайне редко, когда компьютер завис намерво, и другие, более мягкие методы уже не действуют. Да и другим всегда рассказываю, что так делать крайне не рекомендуется.
Можно и с ножа кушать вполне удачно, но всё же есть риск пораниться в один прекрасный момент :)

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


>Ну если Вы внимательно читали статью, в самом начале как раз об этом и говорится.
Полное зависание - это когда даже на Alt+Print+B не реагирует. Вот тогда и не остается ничего кроме reset, или кнопки питания. А если реагирует на Alt+Print+B, то и на Alt+Ptint+REISUB отреагирует.

а что такое REISUB?

REISUB - это клавиатурный набор.


R: Switch the keyboard from raw mode to XLATE mode
E: Send the SIGTERM signal to all processes except init
I: Send the SIGKILL signal to all processes except init
S: Sync all mounted filesystems
U: Remount all mounted filesystems in read-only mode
B: Immediately reboot the system, without unmounting partitions or syncing

ctrl+alt+а1 потом ctrl+alt+del

Можно и так, конечно. Но это получается, как бы в Притер из Москвы через Пекин.)

Все зависит от того, как собрано ядро. Лично у меня SysRq отключено за ненадобностью, естественно ваша комбинация не сработала.


Спасибо Очень даже пользительно ))

Спасибо большое! А то, когда жму "выкл" возникает неприятное ощущение, что совершаю варварский акт насилия над системой :(

Linux Mint 18.1 Cinnamon - работает только первая комбинация по выключению ПК. Еще можно выйти из сеанса - Ctrl+Alt+Del. Как перезагрузиться? В Debian в критических случаях я использовал одну из виртуальных консолей (tty) - Ctrl+Alt+F1. F6, в Mint это почему-то не работает.

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