リブートは、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分以内に、新しいログインが禁止されます。
reboot
とinit 6
の違いに関する私の基本的な理解は次のとおりです。
reboot
はディスクをアンマウントし、基本的にシャットダウンスクリプトを実行せずに電源スイッチをフリックします。init 6
は、システムのランレベルを下げるため、/etc/init/rc.*
のすべてのシャットダウンスクリプトを実行します--force
または-f
なしのreboot
コマンドは、init 6
と基本的に同じことを行うシャットダウンコマンドを実行します。reboot
の代わりにinit 6
を使用する習慣を身に付けた方が安全であり、クロスディストリビューションでの動作が向上するため、おそらくreboot
のデフォルトの動作が変更され、誰かがそれを使用する場合、エラー/データ損失を防ぎます。それは正しいですか?そうでない場合、私は何が欠けていますか?
以下の場合を除き、reboot
の代わりにinit 6
を使用する説得力のある理由はありません。
reboot
実行可能ファイルまたはが欠落していますreboot
(reboot --force
を実行しない限り)は、実際には「よりソフトな」シャットダウン方法です。
考慮してください:
init 6
は、システムのランレベルを削減するため、/etc/init/rc.*
内のすべてのシャットダウンスクリプトを実行します
ただし、 reboot
コマンド 、なしと呼ばれる--force
フラグは、これらの2つの状況のいずれかが該当する場合、システムを直接再起動します( reboot
システムコール を介して) :
init 6
が行うこと再び、init 6
を実行しても、reboot
コマンドを実行しても実行されないことはありません。それ以外の場合、Sudo reboot
はSudo shutdown -r now
と同等です。これはSudo init 6
が行うすべての素晴らしいことを行いますが、次のことも行います。
Sudo init 6
よりも直感的で自己記録的です。ログインしているのがローカルログインのみのシステムである場合、init 6
を使用して再起動しても問題はありません。再起動することを好みます。そして、必ず先に進みます。そうすることで何も害を与えません。しかし、この方法で客観的に好ましいことも何もありません。
init
のドキュメントには、システムをシャットダウンまたは再起動する通常の方法ではないと書かれています。init
がユーザーによって実行されるとき(Sudo init 6
を実行するときなど) )、実際にtelinit
を実行します( man init
を参照)。 telinit
は、実際にランレベルを変更するものです。そして man telinit
は次のことを示しています。
通常、 shutdown (8)ツールを使用して、システムを停止または再起動するか、シングルユーザーモードに戻します。