回答:
それらに違いはありません。内部的にはまったく同じことを行います。
reboot
shutdown
コマンドを使用します(-rスイッチ付き)。shutdownコマンドは、実行中のすべてのプロセスを強制終了し、すべてのファイルシステムをアンマウントし、最終的にACPI電源コマンドを発行するようカーネルに指示します。ソースはここにあります。古いディストリビューションでは、リブートコマンドはSIGKILL
シグナルを発行することでプロセスを強制的に終了させていました(ソースにまだありますが、-f
オプションで呼び出すことができます)init 1 -> shutdown -r
。これにより、シャットダウン前にデーモンが自身をクリーンアップします。
init 6
init
initファイルに記述されているすべての生成されたプロセス/デーモンを(開始した順序とは逆に)シャットダウンし、最後にshutdown -r now
コマンドを呼び出してマシンを再起動するようにプロセスに指示します
現在、両方のコマンドはまったく同じであるため、大きな違いはありません。また、シャットダウンスクリプトを呼び出すことでサービス/デーモンを開始するために使用されるinitスクリプトを尊重します。reboot -f -r now
下記の場合を除き
なぜreboot -f
安全でないのかについてのマンページからの小さな説明があります:
-f、-force 即時停止、電源オフ、再起動を強制します。initシステムに連絡しないでください。
編集:
言及するのを忘れていましたが、今後のRHELディストリビューションでは、新しいsystemctl
コマンドを使用してpoweroff / rebootを発行する必要があります。manページに記載されているようにreboot
し、shutdown
彼らは「のみの互換性のために利用可能な従来のコマンドを実行します。」そして、systemctl
メソッドは唯一の安全なものになります。
init 1 -> shutdown -r
?
シャットダウンは、抜本的なアクションの理由を指定できるようにするため、望ましい方法です-常に行うべきことです。メッセージは後世のためにログに記録されます。例えば:
shutdown -r now 'Kernel upgrade requires reboot'
また、再起動時間以外のものを指定することにより、スケジュールされた再起動を実行することもできますnow
。
shutdown -r 22:00 'Work around kernel memory leak'
その後、ユーザーは時間の経過とともに定期的に通知を受け取ります。プロセスはより整然としてプロフェッショナルになります。
伝統のUnix上で、reboot
かつshutdown -r now
非常に異なるコマンドです。通常の使用でreboot
は、シングルユーザーモードでのみ安全に使用できます。
shutdown -r now
は、さまざまな* nixでシャットダウンする標準的な方法であり、一般に安全に使用でき、機能的にはと同等init 6
です。