各種ディストリビューションの初期化システムとサービス管理

各種ディストリビューションの初期化システムとサービス管理

どのLinuxディストリビューションがどの(デフォルト)初期化システムに付属し、どのツールがサービスの開始/停止に使用されるかについての概要はありますか?

サービスを開始/停止/クエリする展開に依存しない方法はありますか?

  • /etc/init.d/xyz startsystem-v init システムにのみ適用されます。
  • service xyz startすべてのディストリビューションでは使用できません(この機能を持たないディストリビューションとは何ですか?)
  • 利用可能なコマンドに基づいて大文字と小文字を切り替えることが唯一の信頼できる方法のようです。

背景:サービスを再起動または照会する必要があるさまざまなLinuxディストリビューション用のインストーラを作成する必要があります。このツールを呼び出すことをお勧めしますが、serviceどのディストリビューションがこの機能をサポートしているかわかりません。

答え1

このサービスをインストールする場合は、サポートするプラットフォームの初期化スクリプト/構成を正しく作成する必要があるため、展開ごとのサービス管理を理解する必要があります。

  • システム- systemctl start xyz.service
    Fedora 15+、RHEL7、Arch、Debian 8+、Ubuntu 15+、openSUSE 12.3+

  • 突然現れる- service xyz start
    Ubuntu、Fedora 9+、RHEL6

  • システムV- /etc/init.d/xyz start
    RHEL5、Debian、SUSE

  • オープンRC- /etc/init.d/xyz start
    Gentoo、Alpine(Net/FreeBSD対応)

  • シングルモード光ファイバsvcadm enable svc:/prefix/xyz
    -Solaris、Opensolaris(illumos、smartosなど)ベース

  • rc- /etc/rc.d/xyz start
    BSD

  • 放射- オペレーティングlaunchctl start xyz
    システム

システムV/etc/rc.d/xyzほとんどの新しいinitシステムは引き続きスクリプト(Linux標準)をサポートしているので、これが出発点です。

システムLinuxが向かう場所

多くのプラットフォームで動作するユーティリティはわかりませんが、ほとんどの構成管理ソフトウェアはクロスプラットフォームのサービス管理を実行できます。残念ながら、これは構成管理ソフトウェア(または少なくとも基本モジュールとランタイムRuby / Python)もインストールする必要があることを意味します。構成ツールを使用してすべての操作を実行できるため、自分のコンピュータでインストールを管理する場合に便利です。ソフトウェアを誰にでも配布しようとすると良いことではありません。

次の構成管理例は、ローカルの基本サービス・マネージャーと対話し、xyzまだ実行されていない場合はそれを開始します。もう知る必要はありません。

シェフ レシピ一つを管理できるserviceリソース

service "xyz" do
  action :start
end

人形service

service { "xyz":
  ensure => "running",
}

アンサーブルserviceモジュール

- service: name=xyz state=started

関連情報