INIT、telinitの - プロセスの初期化プロセス

概要

/ sbinに/ INIT [ -a ] [ -s ] [ -b ] [ -z XXX ] [ 0123456Ss ]
/ sbinに/ telinitの [ -t秒 ] [ 0123456sSQqabcUu ]

説明

その中に

initは全てのプロセスの親です。その主なタスクは、に格納されたファイルからのものでは/ etc / inittabの(参照のinittabスクリプトの作成プロセス内の(5))。このファイルには、いくつかが作る通常はinit各ユーザがログインすることができますラインで導出ゲッティレコードを。また、それぞれのユニークなシステム要件については、個別のプロセスを制御します。

実行レベル

いわゆるランレベルは、この特定の環境では、システム・コンフィギュレーション・ソフトウェア環境であるプロセスのみ選択されたグループが存在することができます。initプロセスを導出異なる実行レベルには/ etc / inittabの定義ファイル。initは:8つの異なるレベルで実行するために開始することができます0-6SまたはSをできるスーパーユーザレベルで実行telinitののコマンドに変換するには、このコマンドはに信号を変換することができ、INITスイッチするレベルを実行して、それを言って、。

実行レベル01、及び6のシステムのために予約特別な実行レベル。シングルユーザーモードのためのレベル1を実行するためにコンピュータを、レベル0にコンピュータを再起動するレベル6の動作をオフに実行します。実行レベルSは、私たちに直接使用されていない、それ以上は一定のレベル実行可能なスクリプト1を実行している場合の動作に呼び出されます。あなたは詳細な情報が必要な場合は、manページを参照してくださいシャットダウン(8)とinittabの(5)。

ドキュメントの実行レベル7-9ものの、だけでなく、使用することができます。「伝統的な」Unixの変異体は、これらの動作レベルを使用していないという理由だけで、その理由は使用しません。また、ランレベルSとランレベルsが、彼らは、オペレーティング・システム内だけで同じレベルであり、二つの異なる別名を持ち、実際には同じです。

システムのブート

最後のステップへのカーネルブートが、ときに初期化プロセスが開始され、それが自動的に検索に/ etc / inittabのタイプがあるかどうかを確認するために、ファイルのinitdefaultが(参照inittabの記録(5))。initdefaultの最初の実行レベルの意思決定システムを記録。このレコード(または全くなしには/ etc / inittabファイル)、そしてあなたは、コンソール入力システムを入力するためにレベルを実行する必要があります。

レベルの実行SまたはSをシングルユーザーモードにシステムに、このモードは必要ありませんの/ etc / initttabファイル。シングルユーザーモードで、/は、sulogin / sbinに意志の/ dev /コンソールデバイス上でオープン。

場合シングルユーザモード、initはファイルからなり/etc/ioctl.saveコンソール読み取るのioctl(2)状態。ファイルが存在しない場合は、initはラインを入れるに設定されている9600ボー、としてCLOCALときinitはシングルユーザモードを終了するとき、それは現在のコンソールからになりますのioctl次回のために、このファイルに保存されている設定。

あなたが最初のマルチユーザモードに入ると、initが実行ブートbootwaitユーザーがログオンする前にファイルシステムをマウントするために、レコードを。そして、指定されたトランスポートに対応する処理を実行します。

、新しいプロセスを開始する際に初期化のためのチェックの/ etc / initスクリプトファイルを。ファイルが存在する場合には、プロセスを開始するには、スクリプトを使用しています。

ファイルシステムが中に存在する場合には/ var / run / utmpは/ var / log / wtmpのそれぞれの子プロセスが終了すると、その後、initは終了するとの理由は、これら2つのファイルに情報を記録しました。

動作レベルを変更します

場合initは指定されたすべての子プロセスを起動した後、そのような場合、検出システムの処理を続行します。これは、子プロセスである、停電が終了し、またはことによるtelinitの送信信号の動作レベルを変更します。それは、これらの信号の一つ以上を受信すると、自動的に再スキャンするの/ etc / inittabのファイル、および対応する動作を行います。そのため、新しいレコードは、いつでもこのファイルに追加することができます。そして、INITまだシステムを待っているが、信号を送りました。あなたはリアルタイムの更新を取得したい場合は、さまざまなシステムファイルを更新したら、あなたは使用することができますtelinitのはQまたはQの目を覚ますためにコマンドを初期化して、すぐに再テストの/ etc / inittabのファイル。

場合initがシングルユーザーモードではなく、受信電力が信号を(SIGPWR)、それはファイル読み込み失敗の/ etc / powerstatusを、文書で指定されるように様々な動作を実行します。

失敗します)
UPSから電力を供給する電源障害、。実行 powerwait 電源異常 記録。
O(K)
電源は実行、復元され powerokwait レコードを。
L(OW)
UPSの停電、電圧が低すぎます。実行 powerfailnow 記録。

、ファイル/ etc / powrestatusが存在しないか、文字の上に示した内容が含まれていない場合F.OまたはLを initが文字読み取りれるように、F.を

私たちは使用しませんSIGPWRは/ etc / powerstatusを一部のユーザーがしたいのinitあなたが使用することができ、対話するためには/ dev / initctl制御チャネルを。この点についての説明を参照してくださいはsysvinitソースコードパッケージを。

ときinitの更新要求実行レベルを、initは新しい実行レベルの警告信号で定義されていないすべてのプロセスに送信されますSIGTERM5秒間待ってから、それが実行中のすべてのプロセスを強制的に中断通知しますSIGKILLを注、initは(その子孫を含む)すべてのこれらのプロセスがまだあることを前提としてのinitもともと彼らに同じプロセスグループを作成しました。そのプロセスグループを変更する任意のプロセスがある場合、それはこれらの信号を受信することはできません。このようなプロセスは、手動でそれぞれ終了する必要があります。

telinitの

/ sbinに/ telinitのはにある/ sbinに/ initのソフトリンク。単一の文字パラメータ通知するために使用されるinitは、対応する操作を実行します。次のパラメータが関連しています。

0 1 2 3 4 5 または 6
通知 のinit 指定した実行レベルに実行レベルスイッチ
A B C
知らせる のinit のみ実行 に/ etc / inittabの ファイルが実行されるレベル A B または C レコードの
Q または Q
通知 のinitを 再検出する の/ etc / inittabの ファイル
S または S
通知 のinit シングルユーザーモードに実行レベルスイッチ
Uu
通知 のinit 自動再起動(ホールド)、このアクションをファイルしない の/ etc / inittabを 再試験のために。これを行うと、実行レベルがでなければなりません Ss12345 1、そうでない場合、要求は無視されます

telinitのはまた言うことができるのinit二回SIGTERMとSIGKILL信号伝送時間間隔を。デフォルトでは、あなたが使用することができ、5秒である-t秒オプションを変更します。

telinitのが唯一の適切な権限を持つユーザで実行することができます。

initは、独自調査することによって、プロセスIDを彼があると判断するのinitまたはtelinitの、本当にのinitプロセスは常にNoです1この観点から、我々は呼んでtelinitのが場合にのみ使用することができますinitが少ないいくつかのキーをノックします。

環境変数

initはすべての子プロセスについては、以下の環境変数を設定します。

パス
/ usr / local / sbinに:/ sbinに:/ binにします。/ usr / sbinにします。/ usr / binに
INIT_VERSION
名前が示すとおり。決定するであろから直接スクリプト INIT 有用場合
RUNLEVEL
システムの現在の実行レベル
PREVLEVEL
(実行レベルを変更する場合にのみ有効)前の操作のレベルを実行します
コンソール
システムコンソール。この環境変数が定義されていない場合、この変数は、カーネルから継承された initが 使用する の/ dev /コンソールを デフォルトのコンソールとして

スタートアップロゴ

性(例えば、LILO)が起動するシステムでブートフラグによってブートマネージャの一部を渡して初期化し初期化は、いくつかの次のようになります:

-s、S、単一
システムをシングルユーザーモードで起動します。あなたはこのモードで起動すると、 の/ etc / inittabを チェックする必要があり、シングルユーザモードのシェルが起動される前に、rcスクリプトの実行をガイドします。

 

1-5
定義は実行レベルを開始する必要があります

 

-b、緊急
シングルユーザモードのシェルに直接任意の起動スクリプトを実行しないでください

-a、自動でデフォルトのコマンドラインを使用する場合は、そのような場合には、コマンドラインに、カーネルブート(ユーザーの介入なし)からLILOブートマネージャの単語を増加させたのinitあなたが任意のセキュリティ評価のためのものになることができないという環境変数注意を-もちろん、ユーザーが手動で行にコマンドを入力することができます

xxxの-zは -zパラメータは無視されます。あなたはそれがスタック上に多くのスペースを得ることができるように、わずかに、コマンドラインを拡大するには、このオプションを使用することができます。次にinitはそのように、コマンドラインを操作することができるPSは、(1)現在の実行レベルを示しています。

インターフェース

内部モニタINIT / devのFIFO / DEV / initctl情報を取得するために、そこから。telinitのは、通信し、initのために使用されています。インターフェースは完全に文書化されていません。あなたが興味を持ってinitがある場合、あなたは学ぶことができるのsrc /ディレクトリのinitパッケージ内のソースファイルをinitreq.hファイル。

信号

INITに応答して信号を生成します

シグःUF
この信号を受信した後、可能initの は/ etc / initrunlvl は/ var / log / inirunlvl ファイルがチェックされます。これらのファイルのいずれかが存在すると、ファイルがレベルASCII文字を実行している場合は、initは対応する新しい実行レベルに変換されます。 この機能は、下位互換性のためだけです! 多くの場合、ファイルが存在しない場合は、initは同様の実行 telinitのQを 、このような動作を制御します。

 

SIGUSR1
セマフォを受信すると、initは閉じて、その制御FIFO、再開される の/ dev / initctlを の/ devを再マウントされた後、この操作では、起動スクリプトに便利です。
SIGINT
ユーザはCTRL-ALT-DELキーを押したときに、典型的には、カーネルは、initにこの信号を通過させます。これは、操作を実行 ctrlaltdelはは 同じ。
SIGWINCH
キーボードがある場合 KeyboardSignal ボタンが押されると、信号は、それが起動し、初期化カーネルに送信さ kbrequest 動作を制御します。  

おすすめ

転載: www.cnblogs.com/fanweisheng/p/11087946.html