На Linux (в частности, на производных RHEL CentOS и Fedora) есть ли разница?
echo b > /proc/sysrq-trigger
«Немедленно перезагрузите систему, не отключая и не синхронизируя файловые системы», - говорится в Википедии.
reboot -n
«Не синхронизируйте перед перезагрузкой или остановкой. Обратите внимание, что ядро и драйверы хранилища могут все еще синхронизироваться», согласно man 8 reboot. Есть ли какая-то разница в этом поведении?
Ответы:
Это
/sbin/reboot
обычный исполняемый файл в файловой системе. Если ваша файловая система подключена (например, зависание драйвера файловой системы, зависание аппаратного обеспечения SATA или зависание прошивки диска), изменения для успешного выполнения этого исполняемого файла невелики. С другой стороны, при условии, что у вас уже открыта корневая оболочка,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
.)