Разница между перезагрузкой -n и echo b> / proc / sysrq-trigger?

8

На Linux (в частности, на производных RHEL CentOS и Fedora) есть ли разница?

echo b > /proc/sysrq-trigger

«Немедленно перезагрузите систему, не отключая и не синхронизируя файловые системы», - говорится в Википедии.

reboot -n

«Не синхронизируйте перед перезагрузкой или остановкой. Обратите внимание, что ядро ​​и драйверы хранилища могут все еще синхронизироваться», согласно man 8 reboot. Есть ли какая-то разница в этом поведении?

ш-бета
источник
Почему бы вам проголосовать, чтобы закрыть это?
sh-beta
Проверьте это и попробуйте;) Но на самом деле, почему вы это делаете?
ewwhite
Я хотел бы видеть это, когда это спросили; Я бы перенес его на обмен стека Unix, но, увы, он слишком старый, чтобы его можно было перенести :( Если это все еще проблема, на которую вы хотите получить ответ, я бы предложил переслать
Марк Хендерсон

Ответы:

9

Это /sbin/rebootобычный исполняемый файл в файловой системе. Если ваша файловая система подключена (например, зависание драйвера файловой системы, зависание аппаратного обеспечения SATA или зависание прошивки диска), изменения для успешного выполнения этого исполняемого файла невелики. С другой стороны, при условии, что у вас уже открыта корневая оболочка, echo b > /proc/sysrq-triggerдоступ к файловой системе не требуется.

Микко Ранталайнен
источник
Ну, эхо также является двоичным, верно? Я сталкивался с ситуациями, когда мне действительно нужно перезагрузить сервер, и мне действительно нужно, чтобы он перезагрузился и не застревал в каком-то месте во время выключения. Таким образом, вместо того, чтобы рисковать посещением центра обработки данных, просто введите echo b> / proc / sysrq-trigger. Но обычно я делаю:$ sync; echo b > /proc/sysrq-trigger $ whereis echo echo: /usr/bin/echo /usr/share/man/man1p/echo.1p.gz /usr/share/man/man1/echo.1.gz $ whereis reboot reboot: /usr/sbin/reboot /usr/share/man/man2/reboot.2.gz /usr/share/man/man8/reboot.8.gz
Стефан
echoобычно это встроенная оболочка, поэтому она доступна, если у вас есть приглашение оболочки. Да, /bin/echoтоже существует, потому что по правилам POSIX все команды должны существовать в пути, но могут быть заменены реализацией оболочки для повышения производительности. Он echoиспользуется так часто, что только очень простые оболочки не реализуют его. (Сравните help echoпротив man echo.)
Микко Rantalainen