Differenza tra reboot -n ed echo b> / proc / sysrq-trigger?


8

Su Linux (in particolare, i derivati ​​RHEL CentOS e Fedora), c'è differenza?

echo b > /proc/sysrq-trigger

"Riavvia immediatamente il sistema, senza smontare o sincronizzare i filesystem", secondo Wikipedia.

reboot -n

"Non sincronizzare prima di riavviare o arrestare. Si noti che i driver del kernel e di archiviazione possono ancora sincronizzarsi", secondo il riavvio di man 8. C'è davvero qualche differenza in questo comportamento?


Perché voteresti per chiudere questo?
sh-beta,

Provalo e provalo;) Ma davvero, perché lo stai facendo?
ewwhite,

Vorrei averlo visto quando mi è stato chiesto; Lo migrerei allo scambio di stack Unix, ma purtroppo è troppo vecchio per essere migrato :( Se questo è ancora un problema a cui desideri una risposta, suggerirei di postare di nuovo lì: unix.stackexchange.com
Mark Henderson,

Risposte:


9

Il /sbin/rebootè un eseguibile normale nel filesystem. Se il tuo filesystem viene cancellato (ad es. Blocco del driver del file system, blocco dell'hardware SATA o blocco del firmware del disco), le modifiche per eseguire con successo quel file eseguibile sono praticamente nulle. D'altra parte, supponendo che tu abbia già una shell di root aperta, echo b > /proc/sysrq-triggernon ha bisogno di alcun accesso al filesystem.


Bene, l'eco è anche un binario, giusto? Mi sono imbattuto in situazioni in cui ho davvero bisogno di riavviare un server e ne ho davvero bisogno per riavviarlo e non rimanere bloccato in qualche posto durante l'arresto. Quindi, invece di rischiare di dover andare al datacenter, emetti semplicemente echo b> / proc / sysrq-trigger. Ma di solito lo faccio:$ 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

echodi solito è un built-in della shell, quindi è disponibile se si dispone del prompt della shell. Sì, /bin/echoesiste anche perché con le regole POSIX tutti i comandi devono esistere nel percorso ma possono essere sostituiti dall'implementazione della shell per aumentare le prestazioni. La echosi usa così spesso che solo molto gusci molto di base non implementano esso. (Confronta help echovs. man echo)
Mikko Rantalainen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.