現在、reboot、init 6、shutdown -rの違いは何ですか?


回答:


83

それらに違いはありません。内部的にはまったく同じことを行います。

  • rebootshutdownコマンドを使用します(-rスイッチ付き)。shutdownコマンドは、実行中のすべてのプロセスを強制終了し、すべてのファイルシステムをアンマウントし、最終的にACPI電源コマンドを発行するようカーネルに指示します。ソースはここにあります。古いディストリビューションでは、リブートコマンドはSIGKILLシグナルを発行することでプロセスを強制的に終了させていました(ソースにまだありますが、-fオプションで呼び出すことができます)init 1 -> shutdown -r。これにより、シャットダウン前にデーモンが自身をクリーンアップします。

  • init 6initinitファイルに記述されているすべての生成されたプロセス/デーモンを(開始した順序とは逆に)シャットダウンし、最後にshutdown -r nowコマンドを呼び出してマシンを再起動するようにプロセスに指示します

現在、両方のコマンドはまったく同じであるため、大きな違いはありません。また、シャットダウンスクリプトを呼び出すことでサービス/デーモンを開始するために使用されるinitスクリプトを尊重します。reboot -f -r now下記の場合を除き

なぜreboot -f安全でないのかについてのマンページからの小さな説明があります:

  -f、-force
    即時停止、電源オフ、再起動を強制します。initシステムに連絡しないでください。

編集:

言及するのを忘れていましたが、今後のRHELディストリビューションでは、新しいsystemctlコマンドを使用してpoweroff / rebootを発行する必要があります。manページに記載されているようにrebootし、shutdown彼らは「のみの互換性のために利用可能な従来のコマンドを実行します。」そして、systemctlメソッドは唯一の安全なものになります。


時々、再起動がSIGTERMでハングします。理由を知る方法があります。また、再起動をタイムアウトする方法があります。
CMCDragonkai

2
これらのRHELバージョンは「今後」リリースされません。un unix.stackexchange.com/a/196014/5132で詳細に説明されているように、このようなsystemdオペレーティングシステムではまったく違いはありません。それらは別のプログラムでもありません。
JdeBP

次のようにタイプミスしましたかinit 1 -> shutdown -r
deed02392

リンクが壊れています。
whoKnows

8

シャットダウンは、抜本的なアクションの理由を指定できるようにするため、望ましい方法です-常に行うべきことです。メッセージは後世のためにログに記録されます。例えば:

shutdown -r now 'Kernel upgrade requires reboot'

また、再起動時間以外のものを指定することにより、スケジュールされた再起動を実行することもできますnow

shutdown -r 22:00 'Work around kernel memory leak'

その後、ユーザーは時間の経過とともに定期的に通知を受け取ります。プロセスはより整然としてプロフェッショナルになります。


5

伝統のUnix上で、rebootかつshutdown -r now非常に異なるコマンドです。通常の使用でrebootは、シングルユーザーモードでのみ安全に使用できます。

shutdown -r nowは、さまざまな* nixでシャットダウンする標準的な方法であり、一般に安全に使用でき、機能的にはと同等init 6です。

init(8) reboot(8)


4

FreeBSDではとの間に違いがrebootありshutdown -r nowます。rebootmanページから:

通常、shutdown(8)ユーティリティは、システムを停止または再起動する必要があるときに使用され、差し迫った破滅の事前警告をユーザーに与え、特定のプログラムを完全に終了します。


1
ただし、これはBSDの質問ではありません。質問のタグと、コマンドの1つでのSystem 5実行レベルの使用によって証明されています。☺
JdeBP

1
Linuxの質問であることは知っています。他のシステムでは違いがあることを知っていると、誰かが役に立つと思うかもしれません。
マリアンチェルニー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.