Если вы когда-либо имели жесткий диск сбой на удаленном сервере, вы можете вспомнить ощущение, что вы были после попытки выполнить следующие команды:
# перезагружать удар: /SBIN / перезагрузка: Ошибка ввода / вывода # выключение -r Теперь удар: /SBIN / выключение: Ошибка ввода / вывода
очевидно, есть проблема с приводом. Эти команды терпят неудачу, потому что ядро не может загрузить /sbin/reboot
а также /sbin/shutdown
двоичные файлы с диска, так что он может выполнять их.
Fsck при следующей загрузке может быть в состоянии исправить все, что неправильно с диском, но сначала вы должны получить систему для перезагрузки. Если ваша машина находится в управляемом хостинг-провайдера, то вы можете представить билет на перезагрузку, но вам придется ждать, пока кто-то, чтобы взять на себя ответственность.
Не было бы хорошо, если бы был способ попросить ядро перезагрузки без необходимости доступа к неисправному диску? Что ж, есть выход, и это удивительно просто.
The «ключ магия SysRq» предоставляет способ для отправки команд непосредственно к ядру через / Proc файловая система. Он включается с помощью опции времени компиляции ядра, CONFIG_MAGIC_SYSRQ, который, как представляется, является стандартной в большинстве дистрибутивов. Сначала вы должны активировать магические опции SysRq:
эхо 1 > / Труды / SYS / ядро / SysRq
Когда вы будете готовы перезагрузить машину просто выполнить следующую:
эхо б> / Труды / SysRq-триггера
Это не пытается размонтировать файловые системы или синхронизации, поэтому его следует использовать только в случае крайней необходимости, но если ваш диск уже неудача, то, что не может быть проблемой.
В дополнение к Перезагрузка системы SYSRQ трюк может быть использован для дамп памяти на консоль, синхронизировать все файловые системы, перемонтировать все файловые системы, в-только для чтения режима, отправить SIGTERM или SIGKILL всем процессам, кроме инициализации, или выключения питания машины полностью, между прочим.
Также, вместо того, чтобы вторя в /proc/sys/kernel/sysrq
каждый раз, когда вы можете активировать магический ключ SysRq во время загрузки системы с помощью SYSCTL, где поддерживается:
эхо "kernel.sysrq = 1" >> /etc/sysctl.conf
Если вы хотели бы узнать больше о волшебном SysRq вы можете прочитать sysrq.txt файл в документации к ядру.