Linuxを理解する:/etc/init.dディレクトリ

Linuxを使用している場合、 init.dディレクトリのことを聞いたことがあるでしょう。 しかし、このディレクトリは正確に何をしますか? 最終的に1つのことを行いますが、システム全体に対して1つのことを行うため、 init.dは非常に重要です。 init.dディレクトリには、システム上のさまざまなサービスの多数の開始/停止スクリプトが含まれています。 acpidからx11-commonまでのすべてがこのディレクトリから制御されます。 もちろん、それほど単純ではありません。

/ etcディレクトリを見ると、 rc#.dという形式のディレクトリが見つかります(#は、0から6までの特定の初期化レベルを表します)。 これらの各ディレクトリ内には、プロセスを制御する他の多くのスクリプトがあります。 これらのスクリプトは、「K」または「S」で始まります。 すべての「K」スクリプトは、「S」スクリプトの前に実行されます。 また、スクリプトの場所に応じて、スクリプトの開始時期が決まります。 ディレクトリ間では、システムサービスは正常に動作するマシンのように連携します。 ただし、killコマンドやkillallコマンドを使用せずに、プロセスをきれいに開始または停止する必要がある場合があります。 そこで/etc/init.dディレクトリが役立ちます。

Fedoraのようなディストリビューションを使用している場合、このディレクトリは/etc/rc.d/init.dにあります。 場所に関係なく、同じ目的を果たします。

init.dのスクリプトを手動で制御するには、ルート(またはsudo)アクセスが必要です。 各スクリプトはコマンドとして実行され、コマンドの構造は次のようになります。

/etc/init.d/commandオプション

commandは実行する実際のコマンドで、 OPTIONは次のいずれかです。

  • 開始
  • やめる
  • リロード
  • 再起動
  • 強制リロード

ほとんどの場合、 起動、停止、または再起動のいずれかを使用します したがって、ネットワークを停止する場合は、次のコマンドを発行できます。

/etc/init.d/networking stop

または、ネットワークに変更を加えて再起動する必要がある場合は、次のコマンドで変更できます。

/etc/init.d/networking restart

このディレクトリ内のより一般的なinitスクリプトの一部は次のとおりです。

  • ネットワーキング
  • サンバ
  • apache2
  • ftpd
  • sshd
  • 鳩小屋
  • mysql

もちろん、ディレクトリにもっと頻繁に使用されるスクリプトがあるかもしれません-インストールしたものに依存します。 上記のリストは、Ubuntu Server 8.10のインストールから取得したものであるため、標準のデスクトップインストールでは、ネットワークタイプのスクリプトがいくつか少なくなります。

しかし、/ etc / rc.localはどうですか

3つ目のオプションがあり、これをかなり使用していました。 このオプションは/etc/rc.localスクリプトです。 このファイルは、他のすべての初期化レベルのスクリプトが実行された後に実行されるため、起動時に発行するさまざまなコマンドを安全に配置できます。 多くの場合、このスクリプトにはnfsなどのマウント命令を配置します。 また、これは「トラブルシューティング」スクリプトを配置するのに適した場所です。たとえば、いったん何らかの理由でsambaが起動したくないと思われるマシンを手に入れたら。 Sambaデーモンが起動時に初期化されるように設定されていることを確認するためのチェックも行います。 そのため、これに前もってすべての時間を費やす代わりに、次の行を配置しました。

/etc/init.d/samba start

/etc/rc.localスクリプトで、Sambaは魅力的な働きをしました。 最終的に私は戻ってこの問題をトラブルシュートします。

最終的な考え

Linuxは柔軟です。 Linuxは非常に柔軟なので、ほとんどの場合、1つの問題を解決する方法はほとんどありません。 システムサービスの開始は、そのような問題の1つです。 /etc/init.dシステム(および/etc/rc.local )の助けを借りれば、サービスが確実に開始されるので安心できます。