reboot -nとecho bの違い>> / proc / sysrq-trigger?


8

Linux(具体的には、RHELの派生物であるCentOSとFedora)では、違いはありますか?

echo b > /proc/sysrq-trigger

ウィキペディアによれば、「ファイルシステムをアンマウントしたり同期したりせずに、すぐにシステムを再起動してください」。

reboot -n

man 8の再起動によると、「再起動または停止する前に同期しないでください。カーネルとストレージドライバーはまだ同期している場合があります。」この動作に実際の違いはありますか?


なぜこれを閉じるために投票するのですか?
sh-beta

テストして試してみてください;)しかし、本当に、なぜこれを行うのですか?
ewwhite

それが尋ねられたときに私はこれを見たかったです。私はそれをUnixスタック交換に移行しますが、悲しいかな、移行するには古すぎます:(これがまだ問題である場合は、回答を求めています。そこに再投稿することをお勧めします:unix.stackexchange.com
マークヘンダーソン

回答:


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 echovs man echo
ミッコランタライネン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.