1. System V の概要

init システムの主な役割は、必須プロセスを起動および停止することです。Linux では、System V、Upstart、systemd という 3 つの主要な init 実装が登場しました。このレッスンでは、最も伝統的なバージョンであるSystem V initSysVまたは単にsystemv(「システムファイブ」と発音)と呼ばれることが多い)に焦点を当てます。

システムがsystemv実装を使用しているかどうかを確認するには、/etc/inittabファイルを探します。このファイルが存在する場合、SysV ベースのディストリビューションを実行している可能性が最も高いです。

System V によるプロセスの管理方法

systemv initプロセスは、サービスを順次起動および停止します。たとえば、foo-bという名前のサービスがfoo-aに依存している場合、foo-aが完全に実行されるまでfoo-bは起動できません。initvシステムは、シェルスクリプトを使用してこれを実現します。これらのスクリプトは特定のディレクトリに配置され、サービスの起動と停止を処理します。カスタムスクリプトを作成することもできますが、ほとんどのシステムは、必須の OS サービスを管理するプリパッケージ化されたスクリプトに依存しています。

利点と欠点

この逐次アプローチの主な利点は、シンプルさと予測可能性です。foo-aが常にfoo-bより先に起動することがわかっているため、依存関係のトラブルシューティングが簡単です。しかし、init vモデルの大きな欠点はパフォーマンスであり、サービスは通常 1 つずつ起動されるため、最新の並列システムと比較して起動時間が遅くなります。

System V におけるランレベルの理解

systemv環境では、マシンの状態は 0 から 6 の番号が付けられたランレベルによって定義されます。これらのモードは Linux ディストリビューションによって若干異なる場合がありますが、一般的に次の標準的な規則に従います。

  • 0: シャットダウン
  • 1: シングルユーザーモード
  • 2: ネットワークなしのマルチユーザーモード
  • 3: ネットワークありのマルチユーザーモード
  • 4: 未使用
  • 5: ネットワークと GUI ありのマルチユーザーモード
  • 6: 再起動

Init スクリプトとディレクトリ

システムが起動すると、設定されたランレベルを確認し、対応するスクリプトを実行します。これらのスクリプトは通常、/etc/rc.d/rc[runlevel].d/のようなディレクトリ内、または中央の/etc/init.dディレクトリ内にあります。S(Start)で始まるスクリプトは起動時に実行され、K(Kill)で始まるスクリプトはシャットダウン時に実行されます。SまたはKの後に続く数字が実行順序を決定します。

例:

pete@icebox:/etc/rc.d/rc0.d$ ls
K10updates  K80openvpn

この例では、ランレベル 0(シャットダウン)に切り替えると、最初に updates サービスを停止するスクリプトが実行され、次に OpenVPN のスクリプトが実行されます。マシンのデフォルトのランレベルは/etc/inittabファイルで見つけることができ、そこで変更することもできます。

System Vは、ほとんどの最新の Linux ディストリビューションではsystemdに取って代わられていることに注意することが重要です。しかし、新しい init システムでは、systemv initスクリプトに依存するレガシーサービスをサポートするための互換レイヤーを提供することが多いため、ランレベルの概念に遭遇することがまだあります。

ログインして学習進捗を保存

サインイン

演習

練習あるのみです!Linux プロセス管理とシステム設定に関する実践的なラボをいくつか紹介します。これらは init システムがどのように動作するかの基礎となります。

  1. Linux プロセスの管理と監視 - フォアグラウンドおよびバックグラウンドプロセスとの対話、psを使用した検査、topを使用したリソースの監視、killを使用した終了を練習します。これは、init の「必須プロセスの起動と停止」の側面に直接関連しています。
  2. Linux での at および cron を使用したタスクのスケジュール - 一回限りのタスクと定期的なタスクのスケジュール設定を学習します。これは、init スクリプトがサービスを管理するのと同様の自動実行の概念を基盤としています。
  3. Linux でのファイルおよびディレクトリ権限の管理 - ファイルおよびディレクトリ権限の管理方法を理解します。これは、/etc/init.dにあるシステム設定ファイルやスクリプトを扱う上で不可欠なスキルです。

これらのラボは、概念を実際のシナリオに適用し、基本的な Linux システム管理タスクに対する自信を構築するのに役立ちます。

クイズ

シャットダウンには通常どのランレベルが使用されますか?