web-dev-qa-db-ja.com

rc、rc.local、rc.sysinitの違いは何ですか?

起動時に現在のランレベルの起動スクリプトのリストを表示しようとしました。私は次のコードを書きました。

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ファイルに入れると、コードは再起動の前後に実行されます。

  • では、rcrc.local、およびrc.sysinitファイルの違いは何ですか?
  • これらのファイルをどこで正確に編集する必要がありますか?

また、2、3、4、5のランレベルでS99localrc.local->ソフトリンクを見つけることができます。

rc.localがランレベル1で実行されないという意味ですか?

3
GP92
  • rcは通常Linuxディストリビューションでは使用されませんが、 BSDで使用
  • rc.localは、シンボリックリンクを追加せずに、起動時に追加のコマンドを実行できるようにするために使用されます。
  • rc.sysinitRed Hat 固有のようで、プロセスの非常に早い段階で実行されます。 rc.localが後で実行される間、最初のスクリプトの1つとして実行されます。

また、2、3、4、5ランレベルでrc.localのS99local->ソフトリンクを見つけることができます。 rc.localがランレベル1で実行されないということですか?

正解です。つまり、/etc/rc.localへのシンボリックリンクであるS99localは、ランレベル234、および5を入力するときに実行される最後のスクリプトの1つになります。 。 1シングルユーザー ランレベルであり、通常はレスキュー/メンテナンス作業に使用されるため、ランレベル1では実行されません。

6
Ulrich Dangel

rc.sysinitは、initプロセスによって実行される最初のスクリプトです。このスクリプトはシステムを初期化するためのものであり、これには以下が含まれます。

  • カーネルモジュールのロード
  • ホスト名の設定
  • Sysctl.confからカーネルパラメーターを構成します
  • シリアルポート、RAID、LVMを初期化する
  • ファイルシステム(/ proc、/ sysなど/ etc/fstab内)をチェックしてマウントします。これは、/ etc/fstabで指定されたオプションを使用してルートファイルシステムを再マウントするときです(ルートファイルシステムは、初期化プロセスが開始される前に、カーネルによって読み取り専用として/ sysrootにマウントされたことを思い出してください)。

rc.sysinitが実行された後、ランレベルスクリプトが実行されます(デフォルトのランレベルが3の場合、/etc/rc.d/rc3.d/内のスクリプト)。

ランレベルスクリプトの実行が完了すると、/etc/rc.d/rc.localスクリプトが実行されます。このファイルは、シンボリックリンクの作成とスクリプトの命名を含むSysVスクリプト全体を実行したくない場合に、追加のスタートアップを配置できる場所です。特定の形式などで。

0
tino1b2be