![異なるディストリビューション上の init システムとサービス管理](https://rvso.com/image/38707/%E7%95%B0%E3%81%AA%E3%82%8B%E3%83%87%E3%82%A3%E3%82%B9%E3%83%88%E3%83%AA%E3%83%93%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E4%B8%8A%E3%81%AE%20init%20%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%A8%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E7%AE%A1%E7%90%86.png)
どの Linux ディストリビューションにどの (デフォルトの) init システムが付属し、サービスを開始/停止するためにどのツールを使用するかについての概要はありますか?
サービスを開始/停止/照会するためのディストリビューションに依存しない方法はありますか?
/etc/init.d/xyz start
system-v initシステムでのみ動作しますservice xyz start
すべてのディストリビューションで利用できるわけではありません (どのディストリビューションにこの機能がありますか?)- 利用可能なコマンドに応じて大文字と小文字を切り替えるのが唯一の信頼できる方法のようです
背景: サービスを再起動/照会する必要があるさまざまな Linux ディストリビューション用のインストーラーを作成する必要があります。service
そのためにはツールを呼び出すのが便利ですが、どのディストリビューションがこれをサポートしているかはわかりません。
答え1
このサービスをインストールする場合は、サポートするプラットフォームに合わせて init スクリプト/構成を正しく記述する必要があるため、各ディストリビューションのサービス管理について知っておく必要があるでしょう。
システム-
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をサポート)SMF の-
svcadm enable svc:/prefix/xyz
Solaris、OpenSolaris ベース (illumos、smartos など)rc -
/etc/rc.d/xyz start
BSD起動-
launchctl start xyz
OSX
システムVは Linux 標準 ( /etc/rc.d/xyz
) であり、ほとんどの新しい init システムはそこからのスクリプトを引き続きサポートしているので、これが基本ポイントになります。
システムLinuxが向かう先は
多くのプラットフォームで実行できるユーティリティについては知りませんが、ほとんどの構成管理ソフトウェアはクロスプラットフォームのサービス管理を行うことができます。残念ながら、これは構成管理ソフトウェアもインストールする必要があることを意味します (または少なくとも基礎となるモジュールとランタイム ruby/python)。自分のマシンでインストールを管理する場合は、構成ツールからインストールするすべての操作を実行できるため、これは問題ありません。ソフトウェアを誰かに配布しようとしている場合は、あまり適していません。
次の構成管理の例では、ローカルのデフォルトのサービス マネージャーと対話し、xyz
まだ実行されていない場合は起動します。これ以上のことは意識する必要はありません。
あシェフ レシピ管理できるservice
リソース
service "xyz" do
action :start
end
service { "xyz":
ensure => "running",
}
- service: name=xyz state=started