/etc/rc.localの目的と一般的な使い方

/etc/rc.localの目的と一般的な使い方

タイトルは次のとおりです。

#!/bin/sh -e
#
# rc.local - executed at the end of each multiuser runlevel
#
# Make sure that the script will "exit 0" on success or any other
# value on error.

このファイルがあるのはなぜですか(多くの内容ではありません)、通常このファイルにどのコマンドを入力しますか? 「マルチユーザー実行レベル」とは何ですか? (私の考えではrc「実行命令」のようですが?)

答え1

ランレベルシステムが起動、再起動、シャットダウン中、シングルユーザーモードであるか、正常に動作しているかを示すシステム状態。伝統的な内部にプログラムは適切な実行レベルに切り替えてこれらのタスクを処理します。 Linuxでは、ランレベル慣例によると:

  • Sが始まると、
  • 0終了すると、
  • 6 再起動すると
  • 1 シングルユーザーモードと
  • 通常動作時2〜5。

実行レベル2〜5は、システム管理者だけが使用できる実行レベル1とは異なり、複数のユーザーがログインできるため、マルチユーザー実行レベルと呼ばれます。

実行レベルが変更されると、initが実行されます。RCスクリプト(既存のinitを使用するシステムには他のオプションもあります。突然現れるそしてシステム)。これらのrcスクリプトは通常、システムサービスを開始および停止し、ディストリビューションで提供されます。

このスクリプトは、/etc/rc.localシステム管理者が使用するように作成されました。従来、これは、すべての通常のシステムサービスが開始された後にマルチユーザー実行レベルに移行するプロセスの最後に行われます。これを使用して、にインストールされているものなどのカスタムサービスを開始できます/usr/local。ほとんどのインストールには必要ではなく、/etc/rc.local必要な場合にはいくつか用意されています。

答え2

rc「動作制御」を意味し、

ランレベルはmultiuserネットワークで利用可能なレベルとして定義されるため、これらのサービスは有線コンソール接続ではなくサーバーへの接続を確立するために使用できます。

サーバーは通常、ネットワーク接続をサポートし、有線コンソールがあるかのように機能するサービスプロセッサ(さまざまな名前で)によって管理されます。

ファイルの場合、rc.localこれは便利で、起動するすべての「ローカル」(サイト固有)オブジェクト(デーモンおよび/または起動時間スクリプト)を指定できます。この例を使用することを選択するか、実際に起動/停止スクリプトで "/etc/init.d"を適切に入力できます。

答え3

このrc.local文書はダーバン主に初期化されていないスタイルシステムとの互換性のために使用されます。あなたはそれを使用してはいけません。

/etc/init.d/Skeleton代わりに、ランレベルを新しい初期化スクリプトに変更したときに発生したいすべてをコピーし、inservそれを使用して有効にすることをお勧めします。


更新:以下のコメントによると、この回答は推奨されなくなりました。ただし、この回答はすでに公開されています。数年スケルトンが使用されなくなる前に、そのスケルトンがまだ存在する2019年1月現在、Debianは不安定です。

答え4

私は主に2つの用途に使用します。

  1. 再起動するたびに日付とカーネルのバージョンを記録します。パディングなしでシステムに簡単に追加でき、実行するよりも高速なシンプルなシングルライナーですuptimed

  2. 数年前の Debian から古い /etc/rc.boot/ ディレクトリを復元します。 init.dスクリプトで書き換える価値がないいくつかの簡単なスクリプトがまだ残っています(たとえば、ルートにdmesgを送信するQ&Dスクリプト、アイドルスピンを無効にするにはhdaparmを使用し、先読みサイズを設定するにはblockdevを使用します。スクリプト)。嬉しいですね。他のすべての起動スクリプトの後に実行されます。

例えば

echo "$(date +%s),$(date),$(uname -a)"  >> /var/log/reboot.log

[ -d /etc/rc.boot ] && run-parts /etc/rc.boot

また、今年初めにCentosおよびDebianディストリビューション用の/etc/rc.localスクリプトを作成し、http://169.254.169.254/openstack(on)からec2スタイルのメタデータを取得し、仮想マシンがIP、ホスト名、SSHパスワードキー、およびその他のインスタンス関連キーを取得できるようにしました。 。情報。 cloud-initがこれらのディストリビューションに移植されたので、スクリプトは廃止されました。

関連情報