読んで「停止およびシャットダウンコマンドの違いは何ですか?」、-h / -rオプションの有無にかかわらず、コマンドshutdownが何をするのか、一般的に考えています。
「halt」コマンドは、システムの実行レベル0へのシステムの電源オフを実行します。
「shutdown」コマンドは、-hまたは-rコマンドなしで実行レベル1へのシステムの電源オフを実行します。
コマンド「poweroff」は実行レベル0または1になりますか?これが、これら3つのコマンドの唯一の主な違いですか?
読んで「停止およびシャットダウンコマンドの違いは何ですか?」、-h / -rオプションの有無にかかわらず、コマンドshutdownが何をするのか、一般的に考えています。
「halt」コマンドは、システムの実行レベル0へのシステムの電源オフを実行します。
「shutdown」コマンドは、-hまたは-rコマンドなしで実行レベル1へのシステムの電源オフを実行します。
コマンド「poweroff」は実行レベル0または1になりますか?これが、これら3つのコマンドの唯一の主な違いですか?
回答:
質問のタグごとに、Red Hat Enterprise Linuxを使用しています。バージョン7以降、systemdを使用しています。systemdの世界にとって、他の答えはどれも正しくありません。また、あなたの質問にある仮定のいくつかもありません。
haltは、van Smoorenburgの「System 5」initユーティリティからのコマンド用です。 /sbin/haltへのシンボリックリンクであるステートメントを無視し/sbin/rebootます。systemdには当てはまりません。別のrebootプログラムはまったくありません。 haltか、コマンドライン引数rebootを使用してshutdownプログラムを呼び出します。それらはsystemdにも当てはまりません。別のshutdownプログラムはまったくありません。すべてのシステム管理ツールセットには、これらのユーティリティのバージョンがあります。systemdに、成り上がり、間食、バンSmoorenburg init、およびBSD initすべては自分のを持っているhalt、poweroffなどと。それぞれのメカニズムはわずかに異なります。マニュアルページも同様です。
systemdにツールセットでhalt、poweroff、reboot、telinit、とshutdownされているすべてへのシンボリックリンク/bin/systemctl。これらはすべて下位互換性シムであり、systemdの主要なコマンドラインインターフェイスを呼び出すための単なる省略形ですsystemctl。それらはすべて、同じ単一のプログラムにマップされます(実際はそうです)。(慣例により、シェルはどの名前で呼び出されたかを通知します。)
これらのコマンドのほとんどは、特定のターゲットsystemctlを分離するためにを使用してsystemdに伝えるための省略形です。分離はマニュアルページ(qv)で説明されていますが、この回答の目的では、ターゲットを開始し、他を停止すると考えることができます。systemdで使用される標準ターゲットは、(8)マニュアルページにリストされています。systemctlsystemd.special
bootupsystemdツールセットの(7)マニュアルページの図、特に最後の図は、ここに関連する3つの「最終」ターゲットがあることを示しています。
halt.target—システムがこのターゲットを完全に分離する状態に達すると、reboot(RB_HALT_SYSTEM)システムコールが呼び出されます。カーネルは、ROMモニタープログラムを入力しようとしたか、CPUを単に停止しました(そのために適切なメカニズムを使用します)。reboot.target—システムがこのターゲットを完全に分離する状態に達すると、reboot(RB_AUTOBOOT)システムコール(または魔法のコマンドラインと同等のもの)が呼び出されます。カーネルは再起動をトリガーしようとしました。poweroff.target—システムがこのターゲットを完全に分離する状態に達すると、reboot(RB_POWER_OFF)システムコールが呼び出されます。可能であれば、カーネルはシステムの電源をオフにしようとします。これらは、実行レベルではなく、最終的なシステム状態として考える必要があるものです。そのようなこれらの最終目標のそれぞれが含まれるという考えのように:にsystemdターゲット・システム自体は、他のシステムでは、あるもの、暗黙的ではなく、明示的な符号化の図からのお知らせshutdown.targetその1がでシャットダウン前に停止しなければならないサービスについて説明しますので、ターゲットをそれらがターゲットと競合するようにしshutdown.targetます。
systemctlsystemd-logind呼び出し元のユーザーがスーパーユーザーでないときに、要求を送信しようとします。また、遅延シャットダウンをに渡しsystemd-shutdowndます。そして、いくつかの速記はwall通知をトリガーします。あなたが現在スーパーユーザーであり、スケジュールされたアクションを要求していないと仮定すると、これらの複雑さはさておき、この答えが数倍長くなります:
systemctl isolate halt.target 速記があります:
shutdown -H nowsystemctl halthaltsystemctl isolate reboot.target 速記があります:
shutdown -r nowtelinit 6systemctl rebootrebootsystemctl isolate poweroff.target 速記があります:
shutdown -P nowtelinit 0shutdown nowsystemctl poweroffpoweroffsystemctl isolate rescue.target 速記があります:
telinit 1 systemctl rescuesystemctl isolate multi-user.target 速記があります:
telinit 2telinit 3telinit 4systemctl isolate graphical.target 速記があります:
telinit 5さまざまな異なるコマンドライン構文を解析した後、これらは最終的にsystemctlプログラム内の同じコードパスになります。
ノート:
shutdown now、シングルユーザーモードに切り替えることでした。これはsystemdには当てはまりません。 rescue.target— systemdでレスキューモードに名前が変更されているシングルユーザーモード— shutdownコマンドでアクセスできません。telinit 本当にん完全にそれらのすべてを無視し、マニュアルページを記述するファイルシステムでのシンボリックリンクを。上記のマッピングは、テーブルにプログラムに組み込まれています。runlevelN.targetdefault.targetsystemctl--forceオプションhalt、rebootおよびpoweroffコマンドが言うように同じである--force --forceにsystemctl halt、systemctl rebootとsystemctl poweroff命令。これにより、直接systemctl呼び出しを試みますreboot()。通常、ターゲットを隔離しようとします。telinitはと同じではありませんinit。システム化された世界では異なるプログラムであり、後者はsystemdプログラムではなくプログラムの別名systemctlです。systemdプログラムは、必ずしもすべての任意のバンSmoorenburgの互換性、およびいくつかにsystemdのオペレーティングシステム上でコンパイルされていない1段のしようとした場合、誤って呼び出されて文句を言います。init Nsystemctl。systemdのマニュアルページ。freedesktop.org。systemd.special。systemdのマニュアルページ。freedesktop.org。bootup。systemdのマニュアルページ。freedesktop.org。init。間食ガイド。ソフトウェア。systemctl rebootに相当する必要がありますsystemctl start reboot.target --job-mode=replace-irreversible。他のジョブモードを使用すると、堅牢性が低下します。 unix.stackexchange.com/questions/381739/…– sourcejedi
systemctl reboot「安全な」再起動init 6方法です。
haltすべてのCPU機能を停止するようにハードウェアに指示しますが、電源オン状態のままにします。これは通常、誰かが後で電源ボタンを押して手動でマシンを再起動またはシャットダウンする必要があることを意味します。これを実現する特定の方法はアーキテクチャ固有ですが、たとえば、x86命令セットはHLT、次の外部割り込みが発生するまで中央処理装置(CPU)を停止する命令を提供します。
poweroffのようhaltに、CPUを停止しますが、ACPIハードウェア信号も送信します。これは、完全かつ即時のシャットダウンで開始するようにシステムに指示します。これは、一般的なデスクトップコンピューターで電源ボタンを押すのとほぼ同じです。
両方haltとはpoweroff通常へのシンボリックリンクであるreboot通常起動する実行可能な、shutdown適切な引数(とツール-h、-Pまたはr場合に応じて)halt、poweroffまたはrebootツールを起動するために使用しました。ただし、--forceオプションがに渡されるrebootとき、またはランレベル0または6のときは、適切なコマンドコード自体でシステムコールをreboot呼び出しreboot()ます。
/sbin/init 0たり/sbin/telinit 0取ら特定のステップのような、問題のinitシステムに依存するものの、システムを停止すると同じにする必要があり、システム-Vの初期化、成り上がりかにsystemd。RHELを実行している場合、systemdを使用します。
halt、poweroffおよびshutdown -h完全に同等です。実際、haltとpoweroffはを呼び出すだけshutdown -hです。halt / poweroffマンページから:
システムがランレベル0または6でない場合、つまり正常に実行されている場合に、haltまたはrebootが呼び出されると、代わりにシャットダウンが呼び出されます(-hまたは-rフラグを使用)。詳細については、shutdown(8)マンページを参照してください。
その後、シャットダウンはランレベル0に切り替えてシステムをシャットダウンします。
停止と電源オフ(および再起動)は二重の役割を果たします。シャットダウンのプロセス(つまり、ランレベル0または6)で実行されると、別の回答で説明されているように、マシンの物理的な停止、電源オフ、または再起動に必要な低レベルの操作を実行します。