Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linuxスタートアップスクリプト学習チュートリアル

Linuxスタートアップスクリプト学習チュートリアル

  
 

I. initとrunlevels

Linuxに晒されている友人は、伝統的なinitが7つの実行レベルを定義していることを学んだはずです。例えば、レベル0は

offです。システム、レベル2のエントリはマルチユーザーキャラクタインターフェイス、レベル5はグラフィカルインターフェイスなどです。

/etc /inittabファイルは、システムが各実行レベルに入るときに実行する必要があるコマンドを指定しますマシンが起動すると、initは

行レベル0レベル、レベル1レベルで開始します。 /etc /inittabファイルに設定されているデフォルトのランレベルまで実行します。

システムのデフォルトの実行レベルを変更します。

#vi /etc /inittab

次のフィールドを探します。

id:5:initdefault:


//inittabファイルを編集する

//デフォルトの実行レベルは5で、システム起動時に直接グラフィカルインタフェースに入ることができます。デジタルカスタムシステム起動のデフォルトランレベル

次に、サービス起動スクリプトを知っています。

私のブログの前の記事で、新しいサービス起動スクリプトの作成方法と設定方法を紹介しました(詳細)。 linux

アプリケーション(ソフトウェア)をシステムサービスとして設定する)を参照してください。単に起動スクリプトの概念を取ってください。

起動スクリプトはすべて/etc/init.d/に格納されています。/etc/init.d/scriptname起動モードを使用して、アプリケーションを起動できます。

たとえば、コマンド' /etc/init.d/smb start'を入力してsmbサービスを開始します。

RedHatシステムを使用している場合は、service smb startを使用してサービスを開始することもできます。

/etc/init.dディレクトリ内のスクリプトは個々のサービスを開始および停止できますが、システムの起動時にinit <
> /etc/init.dディレクトリ内にinitは直接見つかりません。各サービスの起動スクリプトは/etc/rc.d/ディレクトリで検索されます。このディレクトリには、異なるinit起動レベルを表すrc0.d、

rc1.dなどのサブディレクトリが含まれています。ディレクトリには、対応する起動レベルの起動スクリプトが含まれています。次に示すように

。次に、これらのrcx.dディレクトリに含まれるディレクトリを見てみましょう。内容、内容はすべて、上位のinitディレクトリ

のスクリプトにリンクされているすべてのシンボリックリンクです。

これらのシンボリックリンク名はすべてSまたはKで始まり、その後に数字とスクリプトによって制御されるサービス名が続きます。たとえば、

S10networkです。

initが低実行レベルから高実行レベルに移行すると、Sで始まるすべてのスクリプトを数字の昇順で実行します。

S = start。これは起動スクリプトに対応します。 Service; K = kill、つまり、スクリプトに対応するサービスをkillします。

最初に、システムのデフォルトの実行レベルinit5(つまり、グラフィカルインターフェイスから直接起動)に対応するスクリプトディレクトリrc5.dを探します。

図:

スタートアップスクリプト2


rc5.dディレクトリには、KスクリプトとSスクリプトの両方が含まれていますシステムが起動すると、initはこれらのシンボリックリンクをたどります。数字の並びで始まる

S個のスクリプトがすべて開かれますシステムがシャットダウンされると、initはすべてのスクリプトに対応するアプリケーションも順番に閉じます。

これらのシンボリックリンクは、実際にはinit.dディレクトリ内の起動スクリプトを指していることがわかります。

起動スクリプト3

起動スクリプト4

rc0.d(シャットダウンシステム)ディレクトリの内容を見てみましょう。

スタートアップスクリプト5

rc0.dディレクトリには、Kで始まるすべてのシンボリックリンクが表示されます。 init 0が指示されると、すべてのシステムサービスは

によって閉じられます。

他のrcx.dディレクトリの内容は似ていますが、起動スクリプトへのシンボリックリンクがいくつかあります。ランレベルごとに異なる起動スクリプトのシンボリックリンクを追加するだけです。


3、カスタムスタートアップサービスの順序

rcx.dディレクトリがスタートアップスクリプトのシンボルを指す前に、リンクはKまたはS +番号+サービス名の中間になります。

番号は非常に重要ですシステムが起動すると、Sで始まるすべてのスクリプトがこの番号の増分で実行され、システムがシャットダウンされると、Kで始まるすべてのスクリプトがこの番号に従って実行されます。

これを知っていれば、サービスの開始順序を自分のニーズに従って制御できます。


シンボリックリンクをカスタマイズするにはどうすればいいですか?

起動スクリプト:

#ln -s /etc/init.d/smb S60smb //smbサービスのスクリプト起動順序を再定義します。

図:

起動スクリプト6


起動スクリプト7

スクリプトを閉じる:

#ln -s /etc/init.d/smb K60smb //起動スクリプトと同様に、Sはlinuxブートに変更され、スクリプト方法1が自動的に開始されます。関連する基本的な知識1)Redhatの起動モードと実行順序が読み込まれます。initプログラムによって実行されます。最初のスクリプト/etc/rc.d/rc $ RUNLEVEL#$ RUNLEVELデフォルトの実行モード/etc/rc.d/rc.local#サービスが開始された後の対応するレベル、ファイルが実行されます(実際には必要になることもあります) /sbin /mingetty#ユーザログインを待つ

Redhatでは、/etc /rc.d /rc.sysinitは主に各実行モードで同じ初期化作業を行います。 :キーマップとシステムフォントの呼び出し

スワップの開始

ホスト名の設定

NISドメイン名の設定

ファイルシステムのチェック(fsck)とマウント

空き容量の制限

サウンドカードモジュールの読み込み

システムクロックの設定

お待ちください。

/etc/rc.d/rc

行の適切なディレクトリにあるスクリプトは、そのパラメータで指定された実行モード(inittabファイルで設定できる実行レベル)に従って実行されます。 Kxxで始まるものはすべて引数としてstopを指定して呼び出され、Sxxで始まる場合は、引数としてstartを指定して

が呼び出されます。呼び出しの順序は、xxからsmallの順に実行されます。 (xxは

の順序を示す数字です。)たとえば、デフォルトの動作モードが3の場合、/etc/rc.d/rcは前述のように/etc/rc.dを呼び出します。
/rc3.d/の下のスクリプト。 Redhatの実行モード2、3、5は初期化スクリプトの最後の

として/etc/rc.d/rc.localを使用しているので、ユーザーはこのファイルを所有できます。他の初期化作業の後にログインする前に、実行する必要があるコマンドをいくつか追加してください。


init /etc/rc.d/rcが実行されるのを待った後(/etc /inittab内の/etc/rc.d/rc内のアクションが待機中であるため)、

は次のようになります。指定された各仮想端末で/sbin /mingettyを実行し、ユーザーのログインを待ちます。

これでLINUXの起動は終了です。

2)initランレベルとディレクティブ

1. INITとは:

initは、Linuxシステムの運用に不可欠なプログラムの一つです。

いわゆるinitプロセス。カーネルによって起動されるユーザーレベルのプロセスです。

カーネルが起動した後(メモリにロードされ、実行され、すべてのデバイスドライバとデータノードが初期化された後)、カーネルはユーザレベルのプログラムinitによって起動されます。起動プロセスを完了する方法。したがって、initは常に最初の

プロセスです(そのプロセス番号は常に1です)。

カーネルはinitが過去に使われたことがあるいくつかの場所でそれを調べ、その正しい場所(Linuxシステムの場合)は

Copyright © Windowsの知識 All Rights Reserved