У меня компьютер запускает тесты, иногда во время теста зависает. Я думал написать сценарий оболочки для проверки связи с тестовой машиной, и если она зависла, перезагрузите ее.
Я подключился к тестовой машине по ssh и смог ее перезагрузить, но во время зависания мне не повезло! Как его перезагрузить во время зависания по ssh?
Спасибо
спецификации: Mac OSX
Установите еще один компьютер рядом с тестовой машиной. Вам нужно будет расположить его так, чтобы привод CD-ROM находился под углом 45 градусов к тестовой машине. Расположите его так, чтобы компакт-диск при извлечении нажимал кнопку питания.
Теперь вы можете подключиться к новому компьютеру по ssh, запустить eject <device>
командуйте и добейтесь своей цели.
Если он действительно завис, скорее всего, вы не сможете запустить новый процесс, а это то, что вам нужно сделать для ssh или перезапустить его.
Серверы, которые действительно нуждаются в удаленном перезапуске в этой ситуации, часто имеют дополнительное оборудование, такое как другое устройство (я думаю, что одно из них называется картой RSA), которое позволяет вам войти в систему и запустить перезагрузку, или сторожевой таймер, который ожидает, что что-то произойдет. регулярно и если этого не происходит - перезагружается.
Другая возможность - запустить ваш сервер как виртуальную машину под гипервизором, таким как VMWare, Xen или VirtualBox, а затем вы можете войти на корневую машину (называемую dom0 в Xen) и перезагрузить зависшую виртуальную машину.
Что вы имеете в виду под зависанием? Если вы имеете в виду, что служба SSH зависла, то вы не можете перезагрузиться. Если под зависанием вы имеете в виду, что ЦП забивается, возможно, вам придется немного подождать. Если под зависанием вы имеете в виду, что какой-то процесс завис, что не позволяет системе выйти из строя, то вам, возможно, придется сначала убить процесс, а затем выполнить завершение работы. Кроме того, у вас может быть настройка системы безопасности, не позволяющая вам выдать команду выключения через ssh.
Хотя я склонен согласиться с теми, кто предлагает вам попытаться найти причину зависания, возможно, вам повезет больше, если вы просто будете держать соединение ssh открытым все время.
Если вы добавите что-то вроде ClientAliveInterval 300 th sshd.conf на сервер, вы можете постоянно держать соединение открытым, что фактически означает, что вам не нужно запускать новый процесс на машине, которую вы пытаетесь перезагрузить, с момента запуска нового процесса может быть одной из причин, с которой у него проблемы.
Как сказано в предыдущем ответе, если есть истинное зависание (сбой ядра или около того) - у вас остаются очень ограниченные возможности при перезагрузке. Функциональность, которую вы ищете, - это управление отключением света, также известное как внеполосное управление. Узнать больше об if от Википедия
О да, этот вопрос был бы больше дома на serverfault
Вы можете попробовать программный сторожевой таймер.
Ядро Linux включает ядро под названием «softdog» [1] как часть проекта linux-ha.
Блок дистанционного управления питанием или «управляемый блок питания» можно приобрести менее чем за 200 долларов. Затем вы подключитесь к нему через Telnet и перезагрузите блок питания.
эхо b> / proc / sysrq-trigger
лучше, конечно, было бы последовательно эхо e i s u b ... но это может не сработать ...