読む「停止コマンドと終了コマンドの違いは何ですか?」、私は通常、-h / -rオプションがあるかどうかにかかわらず、shutdownコマンドが何をするのかを知っています。
"halt"コマンドは、システム電源をシステムランレベル0で終了します。
"shutdown"コマンドは、-hまたは-rコマンドを使用せずにシステム電源を実行レベル1で終了します。
もしそうなら、 "poweroff"コマンドはランレベル0または1に入りますか?これがこれら3つのコマンドの唯一の主な違いですか?
答え1
今systemdに答えがあります。
質問のタグによると、Red Hat Enterprise Linuxを使用しています。バージョン7以降、systemdが使用されます。 systemdの場合、他の答えのどれも正確ではなく、あなたの質問のいくつかの仮定ではありません。
- ランレベルを忘れました;存在しますが、互換性スペーサーとしてのみ存在します。 systemdドキュメントには、この概念が「古い」と記載されています。システムオペレーティングシステムでこの内容を学び始めたら、そこから始めないでください。
- marcelm が参照するマニュアルページは、正しいツールセットではなく、systemd に無効な他のツールセットコマンドの説明です。これは
halt
van Smoorenburg "System 5"init
ユーティリティ会社の注文です。 /sbin/halt
シンボリックリンクであるステートメントは無視されます/sbin/reboot
。 systemdはそうではありません。reboot
別のプログラムはまったくありません。- コマンドライン引数でプログラムを呼び出す
halt
ステートメントを無視してくださいreboot
。shutdown
これはsystemdにも正しくありません。shutdown
別のプログラムはまったくありません。
各システム管理ツールセットには、これらのユーティリティの独自のバージョンがあります。 systemd、スタートアップ、おやつ、van Smoorenburginit
およびBSDにinit
それ自身halt
、poweroff
等があります。彼らの力学は少し異なります。マンページも同様です。
systemdツールセットからhalt
、、、poweroff
reboot
、telinit
とshutdown
はいみんなへのシンボリックリンクは/bin/systemctl
次のとおりです。みんな以前のバージョンと互換性のあるshimは、systemdのデフォルトのコマンドラインインタフェースを呼び出す略語ですsystemctl
。それらはすべて同じにマッピングされます(実際には)。一つプログラム。 (通常、シェルは自分が呼び出された名前を伝えます。)
ランレベルではないターゲット
これらのコマンドのほとんどは、systemdにsystemctl
次の略語を使用するように指示します。分離特定ターゲット。検疫はマニュアルページ(qv)に記載されていますが、systemctl
この回答の目的に応じて1つのターゲットを起動し、別のターゲットを停止することを検討してください。 systemd で使用される標準ターゲットは、systemd.special
(8) のマニュアルページにリストされています。
bootup
systemdツールセット(特に最後の図)のマニュアルページ(7)にある図は、ここに関連する3つの「究極の」目標を示しています。
halt.target
- システムがターゲットが完全に隔離された状態に達すると、reboot(RB_HALT_SYSTEM)
システムコールが呼び出されます。カーネルはROMモニタに入ろうとするか、単にCPUを停止します(これを実行するのに適したメカニズムを使用して)。reboot.target
- システムがターゲットが完全に隔離された状態に達すると、reboot(RB_AUTOBOOT)
システムコール(またはそれに対応する魔法コマンドライン)を呼び出します。カーネルは再起動を試みます。poweroff.target
- システムがターゲットが完全に隔離された状態に達すると、reboot(RB_POWER_OFF)
システムコールが呼び出されます。カーネルは、可能であればシステムの電源を切断しようとします。
これら実行レベルではなく、最終システム状態で考慮する必要があります。図では、systemdターゲットシステム自体は明示的なものではなく、他のシステムに暗黙的に含まれる項目をエンコードします。たとえば、各最終ターゲットにはターゲットの概念が含まれているため、所有shutdown.target
するサービスを終了する前に停止する必要があるサービスについて説明します。紛争ターゲットshutdown.target
。
systemctl
次にリクエストを送信してください。systemd-logind
呼び出しユーザーがスーパーユーザーでない場合。また、遅延終了を渡します。systemd-shutdownd
。一部の略語はwall
通知をトリガーします。この複雑さを取り除き、現在スーパーユーザーであり、スケジュールされたタスクを要求していないと仮定すると、この回答は数倍長くなります。
systemctl isolate halt.target
略語があります:shutdown -H now
systemctl halt
- 素朴さ
halt
systemctl isolate reboot.target
略語があります:shutdown -r now
telinit 6
systemctl reboot
- 素朴さ
reboot
systemctl isolate poweroff.target
略語があります:shutdown -P now
telinit 0
shutdown now
systemctl poweroff
- 素朴さ
poweroff
systemctl isolate rescue.target
略語があります:telinit 1
systemctl rescue
systemctl isolate multi-user.target
略語があります:telinit 2
telinit 3
telinit 4
systemctl isolate graphical.target
略語があります:telinit 5
systemctl
さまざまなコマンドライン構文を解析した後、すべてプログラム内で同じコードパスで終了します。
メモ:
- オプションのない一般的な行動は
shutdown now
方向を変えることです。シングルユーザーモード。 systemdではそうではありません。rescue.target
- シングルユーザーモードの名前が変更されました。構造モードsystemdではshutdown
コマンドを介してアクセスできません。 telinit
もちろんマニュアルページに記載されているように、ファイルシステム内のこれらすべてのエントリとシンボリックリンクを完全に無視してください。上記のマッピングはプログラムテーブルに組み込まれています。runlevelN.target
default.target
systemctl
- systemdには概念がありません。現在のランレベル。このコマンドの操作は、「実行レベルにある場合」によって条件が適用されません。窒素」。
- 、およびコマンドのオプションは
--force
、およびコマンドのオプションと同じです。これにより直接ダイヤルします。通常、ターゲットを隔離しようとします。halt
reboot
poweroff
--force --force
systemctl halt
systemctl reboot
systemctl poweroff
systemctl
reboot()
telinit
同じではありません。彼らはシステムの世界で別のプログラムです。後者はプログラムの名前ではなく、プログラムinit
の別名です。このプログラムは、van Smoorenburg互換性でコンパイルする必要はまったくありません。systemd
systemctl
systemd
init N
追加読書
- 電源を切らずにシステムを停止する必要がある理由はありますか?
- Archのインストール中に「init 0」が原因で「超過パラメータ」が表示されるのはなぜですか?
- ウェイドリー、スティーブン(2014)。 「8. systemd を使用したサービスの管理」 Red Hat Enterprise Linux 7 システム管理者ガイド。赤い帽子。
- レナート・ペトリング(2013-10-07)。
systemctl
。システムのマニュアルページ。 freedesktop.org. - レナート・ペトリング(2013-10-07)。
systemd.special
。システムのマニュアルページ。 freedesktop.org. - レナート・ペトリング(2013-10-07)。
bootup
。システムのマニュアルページ。 freedesktop.org. - ジョナサンデボインポラード(2018)。
init
。スナックガイド。ソフトウェア。
答え2
halt
ハードウェアの表示すべてのCPU機能を停止、電源を入れてください。これは通常、誰かが電源ボタンを押してシステムを手動で再起動またはシャットダウンする必要があることを意味します。これを達成する正確な方法はアーキテクチャによって異なりますが、例えばx86命令セットは次のようになります。HLT
次の外部割り込みがトリガされるまで中央処理装置(CPU)を停止する命令。poweroff
たとえばhalt
、CPU を停止すると同時に次のようなメッセージも送信します。ACPIハードウェア信号は、システムに完全かつ即時シャットダウンを開始するように指示します。これは、通常のデスクトップコンピュータの電源ボタンを押すのとほぼ同じです。
halt
通常、poweroff
実行可能ファイルへのシンボリックリンクですreboot
。shutdown
if、またはツール呼び出しに使用される適切な引数(-h
、-P
またはr
)を持つツールです。ただし、オプションがに渡されるか、ランレベル0または6にある場合halt
poweroff
reboot
--force
reboot
reboot
reboot()
システムコール自体には適切なコマンドコードが付属しています。
答え3
halt
、poweroff
とshutdown -h
全く同じです。実際には、停止と電源オフを呼び出す以外は何もしませんshutdown -h
。停止/電源オフのマンページから:
システムが実行レベル0または6でない場合(つまり、システムが正常に稼働しているとき)、停止または再起動が呼び出されると、シャットダウンが呼び出されます(-hまたは-rフラグを使用)。詳細は shutdown(8) マンページを参照してください。
その後、Shutdownはランレベル0に切り替えてシステムをシャットダウンします。
停止と電源オフ(および再起動)には2つの目的があります。シャットダウン中(つまり、実行レベル0または6で)実行されると、次のように物理的に停止、電源を切る、または再起動するために必要な下位レベルのタスクを実行します。それ以外の場合は、1つの答えに記載されているとおりです。