GNU/Linux >> Linux の 問題 >  >> Linux

Linuxサーバーを停止するためのこれらのコマンドの違いは?

「停止コマンドとシャットダウンコマンドの違いは何ですか?」を読んでください。 、私は一般的に、-h / -rオプションの有無にかかわらず、コマンドシャットダウンが何をするのかを知っています。

「halt」コマンドは、システムの電源をオフにして、
システムのレベル0を実行します。

「shutdown」コマンドは、システムの電源をオフにして、-hまたは-rコマンドを使用せずに
1を実行します。

コマンド「poweroff」は実行レベル0または1になりますか?
これがこれら3つのコマンドの唯一の主な違いですか?

承認された回答:

そして今、systemdの答え。

質問のタグに従って、Red HatEnterpriseLinuxを使用しています。バージョン7以降、systemdを使用しています。他の答えはどれもsystemdの世界には正しくありません。また、あなたの質問のいくつかの仮定もありません。

  • ランレベルを忘れてください。それらは存在しますが、互換性シムとしてのみ存在します。 systemdのドキュメントには、この概念は「廃止された」と記載されています。 systemdオペレーティングシステムでこのようなことを学び始めている場合は、そこから始めないでください。
  • marcelmが引用したマニュアルページを忘れてください。これは適切なツールセットからのものではなく、別のツールセットのコマンドの説明であり、systemdには正しくありません。 停止用のものです vanSmoorenburg「System5」からのコマンドinit ユーティリティ。
  • / sbin / halltというステートメントは無視してください / sbin / restartへのシンボリックリンクです;これはsystemdには当てはまりません。個別のrebootはありません プログラム全体。
  • 停止するステートメントを無視します またはreboot shutdownを呼び出す コマンドライン引数を使用したプログラム。それらはsystemdにも当てはまりません。個別のshutdownはありません プログラム全体。

すべてのシステム管理ツールセットには、これらのユーティリティのバージョンがあります。 systemd、upstart、nosh、van Smoorenburg init 、およびBSD init すべてに独自のhaltがあります 、 poweroff 、など。それぞれのメカニズムはわずかに異なります。マニュアルページもそうです。

systemdツールセットでhalt poweroff 再起動 telinit 、および shutdown すべて / bin / systemctlへのシンボリックリンク 。それらはすべて 下位互換性シム。これは、systemdの主要なコマンドラインインターフェイスを呼び出すための単なる省略形です: systemctl 。それらはすべて、同じシングルにマップされます(実際にはそうです)。 プログラム。 (慣例により、シェルは呼び出し元の名前を通知します。)

ランレベルではなくターゲット

これらのコマンドのほとんどは、 systemctlを使用してsystemdに通知するための省略形です。 、分離 特定のターゲット 。分離については、 systemctlで説明されています。 マニュアルページ(q.v.)ですが、この回答の目的では、ターゲットを開始し、他のターゲットを停止することと考えることができます。 systemdで使用される標準ターゲットは、 systemd.specialにリストされています。 (8)マニュアルページ。

bootupの図 (7)systemdツールセットのマニュアルページ、特に最後のページには、ここに関連する3つの「最終的な」ターゲットがあることが示されています。

  • hallt.target —システムがこのターゲットを完全に分離する状態に達すると、 restart(RB_HALT_SYSTEM)が呼び出されます。 システムコール。カーネルは、ROMモニタープログラムに入ろうとするか、CPUを停止します(これを行うのに適切なメカニズムを使用します)。
  • restart.target —システムがこのターゲットを完全に分離する状態に達すると、 restart(RB_AUTOBOOT)が呼び出されます。 システムコール(またはマジックコマンドラインと同等のもの)。カーネルは再起動をトリガーしようとします。
  • poweroff.target —システムがこのターゲットを完全に分離する状態に達すると、 restart(RB_POWER_OFF)が呼び出されます。 システムコール。可能であれば、カーネルはシステムから電源を切断しようとします。
関連:sudoを使用したリダイレクトまたはパイピングを含むコマンドを実行するにはどうすればよいですか?

これら ランレベルではなく、最終的なシステムの状態として考慮する必要があるものです。図から、systemdターゲットシステム自体が、他のシステムでは明示的ではなく暗黙的であるものをエンコードしていることに注意してください。たとえば、これらの最終的なターゲットのそれぞれが shutdown.targetを含むという概念などです。 ターゲット。競合することにより、シャットダウンする前に停止する必要のあるサービスを記述します。 shutdown.target ターゲット。

systemctl systemd-logindにリクエストを送信しようとします 呼び出し元のユーザーがスーパーユーザーではない場合。また、遅延シャットダウンを systemd-shutdowndに渡します。 。そして、いくつかの速記はをトリガーします 通知。これらの複雑さはさておき、あなたが現在スーパーユーザーであり、スケジュールされたアクションを要求していないと仮定すると、この回答は数倍長くなります:

  • systemctlisolatehalt.target 速記があります:
    • shutdown -H now
    • systemctlhalt
    • 飾り気のない停止
  • systemctlisolatereboot.target 速記があります:
    • shutdown -r now
    • telinit 6
    • systemctlreboot
    • 飾り気のない再起動
  • systemctl Isolate poweroff.target 速記があります:
    • shutdown -P now
    • telinit 0
    • 今すぐシャットダウン
    • systemctl poweroff
    • 飾り気のないpoweroff
  • systemctl Isolaterescue.target 速記があります:
    • telinit 1
    • systemctlレスキュー
  • systemctl Isolate multi-user.target 速記があります:
    • telinit 2
    • telinit 3
    • telinit 4
  • systemctlisolategraphical.target 速記があります:
    • telinit 5

さまざまな異なるコマンドライン構文を解析した後、これらはすべて、最終的に systemctl内の同じコードパスになります。 プログラム。

注:

  • オプションのないシャットダウンの従来の動作 シングルユーザーモードに切り替えました 。これはsystemdには当てはまりません。 rescue.target —シングルユーザーモードの名前がレスキューモードに変更されました systemd内— shutdownでは到達できません コマンド。
  • telinit 本当に これらのrunlevel Nをすべて完全に無視します .target およびdefault.target マニュアルページで説明されているファイルシステム内のシンボリックリンク。前述のマッピングは、 systemctlに組み込まれています。 プログラム、テーブル内。
  • systemdには、現在の実行レベルの概念はありません。 。これらのコマンドの操作は、「ランレベル Nの場合」を条件としません。 「。
  • -force 停止のオプション 、再起動 、および poweroff コマンドは、-force --forceと言うのと同じです。 systemctlhaltへ 、 systemctl restart 、および systemctl poweroff コマンド。これにより、 systemctlが作成されます restart()を呼び出してみてください 直接。通常は、ターゲットを分離しようとするだけです。
  • telinit initと同じではありません 。これらはsystemdの世界では異なるプログラムであり、後者は systemdの別名です。 systemctl用ではなくプログラム プログラム。 systemd プログラムは必ずしもvanSmoorenburgとの互換性を備えてコンパイルされているとは限りません。また、一部のsystemdオペレーティングシステムでは、 init Nを試行すると誤って呼び出されると不平を言います。

さらに読む

  • 電源を切らずにシステムを停止する正当な理由はありますか?
  • `init 0`がArchインストールで「過剰な引数」になるのはなぜですか?
  • Stephen Wadeley(2014)。 「8。 systemdを使用したサービスの管理」RedHatEnterpriseLinux7システム管理者ガイド 。 RedHat。
  • レナートポッターリング(2013-10-07)。 systemctl 。 systemdのマニュアルページ。 freedesktop.org。
  • レナートポッターリング(2013-10-07)。 systemd.special 。 systemdのマニュアルページ。 freedesktop.org。
  • レナートポッターリング(2013-10-07)。 bootup 。 systemdのマニュアルページ。 freedesktop.org。
  • ジョナサンデボインポラード(2018)。 init noshガイド 。ソフトウェア。

Linux
  1. 通常のユーザーとシステムユーザーの違いは何ですか?

  2. Linux – SystemdのすべてのデーモンにデフォルトのCPUアフィニティを設定するにはどうすればよいですか?

  3. SSHのauthorized_keysファイルとknown_hostsファイルの違いは何ですか?

  1. Linuxでの「su」コマンドと「su-」コマンドの違いを学ぶ

  2. Linuxでの「su」コマンドと「su-」コマンドの違い

  3. 「ifconfig」コマンドと「ip」コマンドの違い

  1. システムをシャットダウンするための3つのLinuxコマンドとあなたはそれを簡単に行うことができます

  2. 停止コマンドとシャットダウンコマンドの違いは?

  3. Centos – / usr / lib / systemd/systemと/etc/ systemd / systemの違いは何ですか?