web-dev-qa-db-ja.com

12.10でシステムサービスはどのように開始されますか?

Ubuntuでいつも私を混乱させた1つのことは、システムサービスの開始方法でした。 UbuntuはUpstartを使用してSysVをサポートしていることを知っていますが、サービスの開始に使用するのはどれですか?これは、サービスを「手動」で開始する場合に重要です。

たとえば、私のシステムでは、/etc/init.d/<service>(SysV)および/etc/init/<service>.conf(Upstart)に次のサービスのファイルがあります。

acpid, mysql, networking, qemu-kvm, ufw, libvirt-bin

起動時にMySQLの実行を無効にする場合、Upstart方法またはSysV方法を使用して無効にする必要がありますか?また、どのサービスが実際に汎用サービスの開始に使用されているかをどのように確認できますか?

編集

ここで本当に疑わしいのは、SysV/Upstartを使用してサービスを無効/有効にする方法ではありません。私を本当に混乱させているのは、一部のサービスがSysVとUpstartで同時に定義(および有効化)されているように見えることです。それらの間に優先順位はありますか(mysqlが両方ともSysVを使用して起動する場合)。または、あるツールが他のツールをバックグラウンドで使用している場合がありますか?

12
Salem

SysVとupstartの両方で定義されているサービスに関して、一般にSysVを介して再起動すると、次のようなものが表示されます。

al@al-mythtv:~$ Sudo /etc/init.d/mysql restart
[Sudo] password for al: 
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop mysql ; start mysql. The restart(8) utility is also available.
mysql stop/waiting
mysql start/running, process 29846

つまり、これらのサービスにはUpstartが優先され、SysV実装は単なるラッパーにすぎません。

また、ディレクトリの意味は後方にあると思います。/etc/initはupstart構成、/ etc/init.dはSysV互換性ですが、これらのタイプのサービスのupstartへの単なるシンボリックリンクです。

2
Alistair Buxton

主にアプリケーションとそのパッケージメンテナーに依存します。

Upstartスクリプトはイベントを処理するため(一般的には素晴らしいことです)、Upstartスクリプトを強く好みますが、多くのアプリケーションでは十分なUpstartスクリプトが利用できないか、アプリケーションのメンテナーがデフォルト(アプリケーションまたはDebianの) 。

いずれにしても、あなたは適応しなければならない立場にいます。

  • Upstartの場合:
    • ファイルの名前を.confで終わらない名前に変更するか、または
    • manualをファイルに追加します。これにより、手動でサービスをロードできます。
  • 古いサービスの場合:

    update-rc.d -f <service> remove
    

何かの/etc/init.d/スクリプトがあり、および/etc/init/スクリプトがあり、init.dバージョンがまだ有効かどうかを確認したい場合は、次の方法で確認できます。

ls -l /etc/rc?.d/*<service>

大量のシンボリックリンクが表示される場合、古いSysV initにインストールされています。

6
Oli