システムにインストールされたサービスを開始する場合、次のことができます。
# /etc/init.d/some-svc start
# initctl start some-svc
# service some-svc start
# start some-svc
起動時にサービスの実行を無効にしたい場合は、次のことができます。
# rm /etc/rc2.d/S99some-svc
# update-rc.d some-svc disable
# mv /etc/init/some-svc.conf /etc/init/some-svc.conf.disabled
次に、ブート時などにサービスを開始できるようにするために、同様にさまざまなことができます。
私は、新興企業が(比較的)新しいことであるという事実を知っています。SysVinitが以前どのように機能していたかを知っています。実際にこのようなものとやり取りすることを意図している方法です。たとえば、サービスがUpstartジョブであるか、従来のSysVであるかを、シェルスクリプトのソースを広範囲にわたって実際に読むことなく簡単に判断する方法がわかりません。
そのため、現時点または永続的にサービスを開始または停止する場合、これらのツールのいずれかshould I使用し、なぜですか?答えがいくつかの属性(「このサービスはupstartをサポートする」など)に依存する場合、インストールされたパッケージのその属性についてどのようにすばやく簡単に学習できますか?
関連して、最新のサービスインフラストラクチャ(スタートアップ、および/またはsysvとの互換性)と安全かつ正しく対話できるユーザーインターフェイスツールはありますか?たとえば、sysv-rc-conf
を確実に使用して、開始するサービスを決定できますか?
機能的には、これらの呼び出し方法のいずれにも違いはありません。
start
およびstop
は、initctlへのシンボリックリンクです。 service
は、initスクリプトを実行するか、initctlを使用するかを決定するシェルスクリプトです。
Upstartジョブとは何かを確認する最も簡単な方法は、/etc/init/
を調べることです。そこにはすべてUpstartの仕事があります。 ls -l /etc/init.d/
を指定すると、すべてのサービスとシステムタスクが表示されます。 SysV initジョブは実際のファイルになり、Upstartジョブは/lib/init/upstart-job
へのシンボリックリンクになり、Upstartジョブを適切に呼び出します。
つまり、たとえば/etc/init.d/apport restart
を呼び出すことでUpstartジョブを呼び出すこともできますが、代わりにservice、start、またはstopの使用が出力から示唆されます。
したがって、実際には違いはありません(まだ!)。ただし、スクリプトを作成している場合は、非推奨になる可能性はほとんどないので、確かにservice、start、またはstopを使用しますが、/ etc/init.d /を介してサービスを呼び出すと、おそらく道はなくなりますすぐに)。
サービスの無効化に関する注意:.confファイルの名前変更は機能しますが、お勧めしません。その方法でサービスを無効にすることもできますが、パッケージのアップグレードが利用可能な場合、dpkgはUpstartジョブの新しいコピーをコピーダウンし、意図せずにサービスを再び有効にします。 Upstartジョブを無効にする正しい方法は、 。override file を使用して、元のジョブをそのまま残すことです。
たとえば、apportを無効にするには、単に「manual」という単語を含む/etc/init/apport.override
というファイルを作成します。
# echo "manual" > /etc/init/apport.override
個人的には、sysv-rc-conf
の使用を避けます。 SysVジョブを変更するためにそれを使用するのに十分安全かもしれませんが、私にはわかりません。 Upstartジョブをサポートしていないようであり、どちらがインターフェースであるかを伝える方法はありません。 SysVスクリプトを管理するためにupdate-rc.d
に固執します。
Upstartの詳細については、以下を参照してください。
man 5 init
: http://manpages.ubuntu.com/manpages/precise/en/man5/init.5.html