System V の概要
100%

Init · レッスン 1

System V の概要

従来の System V init が、ランレベルと順序付けられたサービススクリプトのリンクをどう使うか学びます。

System V init は通常 SysV init または sysvinit と呼ばれ、従来から使われてきた PID 1 とサービス起動の仕組みです。古いシステムや互換スクリプトを扱ううえで今も重要ですが、SysV 形式のファイルがインストールされているだけでは、実行中の PID 1 が sysvinit であるとは断定できません。

稼働中の init システムを特定する

実際に動いている PID 1 を調べます。

$ ps -p 1 -o pid,comm,args=
$ readlink /proc/1/exe

/etc/inittab ファイルや /etc/init.d/ ディレクトリがあることは、補助的な証拠にすぎません。systemd などの init システムも互換性のためにこれらを残すことがあり、コンテナではホストと異なる PID 名前空間が見える場合もあります。

sysvinit が稼働中であることを示す最も強い証拠はどれですか?

ランレベル

ランレベルとは、数値で名前を付けた動作モードです。SysV の設定では伝統的に 0 から 6 と特殊なレベルを使いますが、その意味は普遍的な規則ではなく、ディストリビューションの方針で決まります。一般的な慣例は次のとおりです。

  • 0:停止または電源オフへの移行
  • 1 または S:シングルユーザーまたはレスキューモード
  • 2 から 5:ディストリビューションが定義するマルチユーザーモード
  • 6:再起動への移行

Debian 系では歴史的にレベル 2~5 をほぼ同じように扱い、Red Hat 系の慣例ではテキストモードとグラフィカルモードを区別します。実際のホストで /etc/inittab、init の文書、ランレベルディレクトリを調べてください。

多くの SysV システムで、停止または電源オフを要求するランレベルは慣例上どれですか?

init スクリプトとランレベルのリンク

サービススクリプトは通常 /etc/init.d/ の下にあります。/etc/rc2.d/ や /etc/rc.d/rc2.d/ などのランレベルディレクトリには、移行時の操作と順序を名前に符号化したリンクがあります。

  • SNNname のリンクは開始操作を要求します。
  • KNNname のリンクは停止操作を要求します。
  • NN は、その移行におけるリンクの辞書順を定めます。

正確なアルゴリズムとディレクトリは環境によって異なります。依存関係をスクリプトのヘッダーに記述してディストリビューションのツールで処理する場合や、一部の処理を並列化する実装もあります。SysV を「すべてのサービスが必ず1つずつ順番に起動する仕組み」と単純化してはいけません。

ランレベルへ移行するとき、S20networking というリンクは慣例上何を要求しますか?

ランレベル間を移行する

init がランレベルを変更すると、ディストリビューションの rc 機構は不要になったサービスを停止し、新しいモードで必要なサービスを起動します。スクリプトは、状態確認や移行操作を繰り返しても扱える程度に冪等で、意味のあるステータスを返す必要があります。

ランレベル 0 または 6 の要求は、システム全体の可用性を失わせる操作です。生の init 移行を不用意に呼び出さず、システムのシャットダウン用インターフェースを使い、ユーザーへ通知し、作業中の内容を保存し、リモートコンソールへ接続できることを確認してください。

ランレベル 6 は慣例上何を要求しますか?

互換機能の限界

systemd ホストでは、SysV スクリプトが生成ユニットとしてラップされる場合がありますが、それでも systemd の依存関係、タイムアウト、ログ、状態の意味が適用されます。古いスクリプトを直接実行すると、サービスマネージャーの追跡を迂回することがあります。稼働中のマネージャーを特定し、可能ならそのネイティブなインターフェースを使ってください。

systemd ホスト上の SysV 形式スクリプトを、通常はサービスマネージャー経由で呼び出すべきなのはなぜですか?

レッスン完了

System V の概要 を完了しました

従来の SysV 構成が実際に稼働中だと思い込まず、その内容を解釈できるようになりました。

  • init コマンドを選ぶ前に、実行中の PID 1 を特定する。

  • ランレベルの意味を、ディストリビューションが定める慣例として扱う。

  • ランレベルリンクの S、K、数字による順序を読み取る。

  • レベル 0 と 6 では、制御されたシャットダウン手順を使う。

  • 互換スクリプトがある場合も、稼働中のマネージャーを尊重する。

学習進捗を保存

無料アカウントを作成してこのレッスンを保存し、どのデバイスからでも学習を続けられます。

無料アカウントを作成
次のレッスン
Init に戻る