起動時に現在のランレベルの起動スクリプトのリストを表示しようとしました。私は次のコードを書きました。
rl=`runlevel | cut -d " " -f2`
ls /etc/rc.d/rc$rl.d/S* | cut -d "/" -f5
sleep 10
このコードをrc.local
ファイルに入れれば機能します。
しかし、それをrc
ファイルまたは/etc/init.d
の別のスクリプトファイルabc
に配置し、ランレベルディレクトリにソフトリンクを作成しても機能しません。
ただし、次のような単純なコマンドは、すべてのメソッドで実行できます。
ls /etc/init.d
いくつかのスクリプトが開始されない限り、ランレベルやパイピングなどのいくつかのコマンドは機能しませんか?それとも他に何かありますか?
また、コードをrc
ファイルに入れると、コードは再起動の前後に実行されます。
rc
、rc.local
、およびrc.sysinit
ファイルの違いは何ですか?また、2、3、4、5のランレベルでS99local
のrc.local
->ソフトリンクを見つけることができます。
rc.local
がランレベル1で実行されないという意味ですか?
rc
は通常Linuxディストリビューションでは使用されませんが、 BSDで使用rc.local
は、シンボリックリンクを追加せずに、起動時に追加のコマンドを実行できるようにするために使用されます。rc.sysinit
は Red Hat 固有のようで、プロセスの非常に早い段階で実行されます。 rc.local
が後で実行される間、最初のスクリプトの1つとして実行されます。また、2、3、4、5ランレベルでrc.localのS99local->ソフトリンクを見つけることができます。 rc.localがランレベル1で実行されないということですか?
正解です。つまり、/etc/rc.local
へのシンボリックリンクであるS99localは、ランレベル2
、3
、4
、および5
を入力するときに実行される最後のスクリプトの1つになります。 。 1
は シングルユーザー ランレベルであり、通常はレスキュー/メンテナンス作業に使用されるため、ランレベル1
では実行されません。
rc.sysinit
は、initプロセスによって実行される最初のスクリプトです。このスクリプトはシステムを初期化するためのものであり、これには以下が含まれます。
rc.sysinit
が実行された後、ランレベルスクリプトが実行されます(デフォルトのランレベルが3の場合、/etc/rc.d/rc3.d/
内のスクリプト)。
ランレベルスクリプトの実行が完了すると、/etc/rc.d/rc.local
スクリプトが実行されます。このファイルは、シンボリックリンクの作成とスクリプトの命名を含むSysVスクリプト全体を実行したくない場合に、追加のスタートアップを配置できる場所です。特定の形式などで。