web-dev-qa-db-ja.com

再起動はinit 6と同じですか?

リブートは、ubuntuのinit 6と同じですか?

Amazon EC2でUbuntu 12.04を実行しています。ボックスにssh'edすると、runlevelと入力できます。

N 2

man rebootを見ると、次のことがわかります。

--forceで呼び出されたとき、またはランレベル0または6で呼び出されたとき、このツールはreboot(2)システムコール自体を呼び出し、システムを直接リブートします。それ以外の場合、これは適切な引数を指定してshutdown(8)ツールを呼び出すだけです。

man shutdown 8を読んだ場合:

シャットダウンは、システムを安全な方法で停止するよう手配します。ログインしているすべてのユーザーには、システムがダウンしていることが通知され、TIMEの最後の5分以内に、新しいログインが禁止されます。

rebootinit 6の違いに関する私の基本的な理解は次のとおりです。

  • 他のディストリビューションやおそらく古いディストリビューションでは、rebootはディスクをアンマウントし、基本的にシャットダウンスクリプトを実行せずに電源スイッチをフリックします。
  • init 6は、システムのランレベルを下げるため、/etc/init/rc.*のすべてのシャットダウンスクリプトを実行します
  • Ubuntuの新しいバージョンでは、--forceまたは-fなしのrebootコマンドは、init 6と基本的に同じことを行うシャットダウンコマンドを実行します。
  • おそらくrebootの代わりにinit 6を使用する習慣を身に付けた方が安全であり、クロスディストリビューションでの動作が向上するため、おそらくrebootのデフォルトの動作が変更され、誰かがそれを使用する場合、エラー/データ損失を防ぎます。

それは正しいですか?そうでない場合、私は何が欠けていますか?

22
cwd

以下の場合を除き、rebootの代わりにinit 6を使用する説得力のある理由はありません。

  • 何らかの理由で、reboot実行可能ファイルまたはが欠落しています
  • システムがダウンしていることをユーザーに通知するのを避けようとしています。

rebootreboot --forceを実行しない限り)は、実際には「よりソフトな」シャットダウン方法です。

考慮してください:

init 6は、システムのランレベルを削減するため、/etc/init/rc.*内のすべてのシャットダウンスクリプトを実行します

ただし、 rebootコマンドなしと呼ばれる--forceフラグは、これらの2つの状況のいずれかが該当する場合、システムを直接再起動します( rebootシステムコール を介して) :

  • システムは runlevel 0(シングルユーザーモード)であるため、canが発生するランレベルの低下はないため、シャットダウンスクリプトは自動的に実行されません。
  • システムはランレベル6にあります。システムをランレベル6にするためにinit 6が行うこと再び、init 6を実行しても、rebootコマンドを実行しても実行されないことはありません。

それ以外の場合、Sudo rebootSudo shutdown -r nowと同等です。これはSudo init 6が行うすべての素晴らしいことを行いますが、次のことも行います。

  • システムがダウンしていることをユーザーに通知します。
  • 新しいログインを防止します(おそらく成功しませんが)。
  • は、Sudo init 6よりも直感的で自己記録的です。

ログインしているのがローカルログインのみのシステムである場合、init 6を使用して再起動しても問題はありません。再起動することを好みます。そして、必ず先に進みます。そうすることで何も害を与えません。しかし、この方法で客観的に好ましいことも何もありません。

initのドキュメントには、システムをシャットダウンまたは再起動する通常の方法ではないと書かれています。initがユーザーによって実行されるとき(Sudo init 6を実行するときなど) )、実際にtelinitを実行します( man init を参照)。 telinitは、実際にランレベルを変更するものです。そして man telinit は次のことを示しています。

通常、 shutdown (8)ツールを使用して、システムを停止または再起動するか、シングルユーザーモードに戻します。

22
Eliah Kagan