なぜ異なるバイナリでリブート機能が必要なのですか?


12

なぜ異なるバイナリでリブート機能が必要なのですか?

shutdown -r

そして

reboot

それとも、何か違うのですか?


1
区別については、unix.stackexchange.com / questions / 8690 /…を参照してください-コマンドは、オペレーティングシステムに応じて異なる動作をすることができます(ただし、一般的にLinuxでも同じことを行います)。
プリーズスタンド

以下に記載され、unix.stackexchange.com / a / 196014/5132で詳細に説明されているように、この質問の前提は、システム化されたLinuxオペレーティングシステムでは間違っています。これらは、そのようなシステムの異なるバイナリではありません
JdeBP

回答:


15

必ずしも両方が必要なわけではありませんが、Unixの歴史とバージョンの多様性のため、両方が必要です。

それぞれのmanページから:

  • シャットダウンユーティリティは4.0BSDで登場しました。
  • 再起動ユーティリティは、バージョン6 AT&T UNIXに登場しました。

シャットダウンはより汎用的で強力であり、再起動はより使いやすく覚えやすいものです。

shutdownを使用すると、一時的な引数を指定して(たとえば5分で再起動する)、再起動以外にも次のような多くのことができます。

  • 実際にシャットダウンするのではなく、ユーザーをキックオフすることができます
  • シャットダウンする代わりにシステムをスリープ状態にすることができます
  • 再起動せずに単純にシャットダウンできます(haltコマンドなど)。
  • システム上のユーザーにカスタム警告メッセージを含めることができます

ただし、今すぐシステムを再起動するだけの場合は、を入力するrebootよりも簡単ですshutdown -r now


1
楽しい事実:いくつかのバージョンはshutdown現在デフォルトとして使用されています。shutdown -h特にデータセンターのどこかにあるサーバーではなく、これまでにシャットダウンのヘルプを取得しようとしないでください。
残余

6

2つのコマンドは異なる動作をしますが、互いに呼び出しを行うことになります。そのため、同じことをしているようです

rebootカーネルを呼び出して、実際にハードウェアの再起動をトリガーします。ただし、システムがシャットダウンの準備ができている場合にのみこれを行います-すべてのデーモンとユーザープロセスを停止し、ファイルシステムをアンマウントする必要があります。したがって、システムランレベルをチェックし、0または6でない場合、実際に起動しますshutdownあなたのためのコマンド。

shutdownシステムのランレベルが変更されます。(再起動のための停止のために0または6に)ランレベルの変更は、/etc/rc0.dまたはrc6.dでスクリプトをたくさん走るなどシャットダウンデーモン、アンマウントファイルシステム、その最後にこれらのスクリプトを呼び出しますhaltreboot-この時間は、システムがにあります正しいランレベルであり、カーネルに再起動(または停止)するよう指示します。


6

iconoclastが書いたものに加えて、2つのプログラムには重要な違いがあります:shutdownis in /sbin、while rebootin /usr/binです。

なぜこれが重要なのですか?言いますよ。

/usrその下にあるものは、システムが最低限の機能を果たすのに十分なほどシステムが起動されるまで利用可能である必要がないものです。従来は別々のファイルシステムにマウントされることはありませんトップレベルのディレクトリは- 、/bin/etc/sbinなど-システムがこの最低限便利な状態に達している間に利用可能であることが予想されます。この設計にはさまざまな意味があります。たとえば、またはに/usr/bin代替がある場合にプログラムを使用するSysV initスクリプトの「stop」節を記述するのは悪いスタイルです。/bin/sbin

shutdownは、常に利用可能なキーユーティリティです。reboot便利なユーティリティのみです。


1
rebootである/sbin(はsysvinit付き)のDebianとUbuntu(成り上がり付き)で。
ジル 'SO-悪であるのをやめる'

さて、メタ答え:あなたのシステムを知っています。:) CentOSを最もよく使用します。
ウォーレンヤング

Arch(systemd)でも同じ、両方とも/ sbin
デイジー

実際、systemd Linuxオペレーティングシステムでは、どちらも主要なユーティリティではありません。systemdと同様に、これらのコマンドはすべて(systemd docoにあるように)「互換性」コマンドです。確かに、質問の前提は間違っています。それら異なるバイナリにはありません。詳細については、unix.stackexchange.com / a / 196014/5132を参照してください。
-JdeBP
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.