Diferença entre reinicialização -n e eco b> / proc / sysrq-trigger?

8

No Linux (especificamente, derivados do RHEL, CentOS e Fedora), há alguma diferença?

echo b > /proc/sysrq-trigger

"Reinicialize imediatamente o sistema, sem desmontar ou sincronizar sistemas de arquivos", de acordo com a Wikipedia.

reboot -n

"Não sincronize antes de reiniciar ou interromper. Observe que os drivers do kernel e de armazenamento ainda podem sincronizar", de acordo com o man 8 reboot. Existe realmente alguma diferença nesse comportamento?

sh-beta
fonte
Por que você votaria para encerrar isso?
Sh-beta
Teste e experimente;) Mas realmente, por que você está fazendo isso?
ewwhite
Eu gostaria de ter visto isso quando solicitado; Eu o migraria para a troca de pilhas do Unix, mas, infelizmente, é muito antigo para ser migrado :( Se esse ainda for um problema para o qual você está querendo uma resposta, sugiro republicar lá: unix.stackexchange.com
Mark Henderson

Respostas:

9

O /sbin/rebooté um executável regular no sistema de arquivos. Se o seu sistema de arquivos estiver conectado (por exemplo, travamento do driver do sistema de arquivos, travamento do hardware SATA ou travamento do firmware do disco), as alterações para a execução bem-sucedida desse executável são reduzidas a zero. Por outro lado, supondo que você já tenha um shell raiz aberto, echo b > /proc/sysrq-triggernão precisa de nenhum acesso ao sistema de arquivos.

Mikko Rantalainen
fonte
Bem, eco também é um binário, certo? Eu me deparei com situações nas quais eu realmente preciso reiniciar um servidor e realmente precisa que ele seja reiniciado e não fique preso em algum lugar durante o desligamento. Portanto, em vez de arriscar ter que ir ao datacenter, basta emitir echo b> / proc / sysrq-trigger. Mas geralmente eu faço:$ 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
Stefan
echogeralmente é um shell embutido, portanto está disponível se você tiver um prompt de shell. Sim, também /bin/echoexiste, porque pelas regras do POSIX todos os comandos devem existir no caminho, mas podem ser substituídos pela implementação do shell para aumentar o desempenho. O echoé usado com tanta frequência que apenas conchas muito, muito básicas, não o implementam. (Compare help echovs. man echo)
Mikko Rantalainen