どのLinuxディストリビューションにどの(デフォルトの)initシステムが付属していて、サービスの開始/停止にどのツールを使用しているかについての概要はありますか?
サービスを開始/停止/クエリするためのディストリビューションに依存しない方法はありますか?
/etc/init.d/xyz start
はsystem-vinitシステムでのみ機能しますservice xyz start
すべてのディストリビューションで利用できるわけではありません(どのディストリビューションにこれがある(ない)のですか?)背景:サービスを再起動/クエリする必要があるさまざまなLinuxディストリビューション用のインストーラーを作成する必要があります。 service
ツールを呼び出すことはそのためにクールですが、どのディストリビューションがこれをサポートしているかはわかりません。
このサービスをインストールする場合は、サポートするプラットフォーム用にinitスクリプト/構成を正しく作成する必要があるため、いずれにせよ、各ディストリビューションサービス管理について知っておく必要があります。
systemd --systemctl start xyz.service
Fedora 15以降、RHEL7、Arch、Debian 8以降、Ubuntu 15以降、openSUSE 12.3以降
pstart --service xyz start
Ubuntu、Fedora 9以降、RHEL6
SysV --/etc/init.d/xyz start
RHEL5、Debian、Suse
OpenRC --/etc/init.d/xyz start
Gentoo(Net/FreeBSDをサポート)
[〜#〜] smf [〜#〜] --svcadm enable svc:/prefix/xyz
Solaris、Opensolarisベース(illumos、smartosなど)
rc-/etc/rc.d/xyz start
BSD
起動済み --launchctl start xyz
OSX
SysVはLinux標準です(/etc/rc.d/xyz
)ほとんどの新しいinitシステムは、からのスクリプトを引き続きサポートしているので、それがベースポイントです。
systemdはLinuxが向かっているところです
多くのプラットフォームで実行できるユーティリティを知りませんが、ほとんどの構成管理ソフトウェアはクロスプラットフォームのサービス管理を実行できます。残念ながら、これは、構成管理ソフトウェア(または少なくとも基盤となるモジュールとランタイムRuby/python)もインストールする必要があることを意味します。自分のマシンでインストールを管理している場合は、構成ツールからインストールするすべてのことを実行できるため、これは問題ありません。ソフトウェアを誰かに配布しようとしているのなら、あまり良くありません。
次の構成管理の例は、ローカルのデフォルトのサービスマネージャーが何であれ、それがまだ実行されていない場合はxyz
を開始します。これ以上何も意識する必要はありません。
A Chefrecipe 管理できます service
resource
service "xyz" do
action :start
end
service { "xyz":
ensure => "running",
}
- service: name=xyz state=started