Ubuntuには、すべての自動起動サービスのリストを表示するコマンドがありますか?


22

Ubuntuでは、

  1. すべての自動開始サービスのリストを表示するコマンドはありますか?
  2. ブート時にサービスが自動起動されるかどうかを確認するコマンドはありますか?

GoogleとIRCをやりました。答えが見つかりません。Ubuntuにはそのようなコマンドは存在しないかもしれません。最初は、すべての自動起動サービスがの下/etc/rc2.d/になると思っていましたが、それについては間違っていました。いくつかはでのみ設定され/etc/init/*.confます。その後、chkconfigツールを試してみました(手動でインストールしました)。常に機能しません。たとえば、mongodbから自動起動される誤った結果が返され/etc/init/mongodb.confます。

service --status-allまたinitctl list、自動開始ステータスではなく、サービスの現在のステータスのみを通知できます。update-rc.dステータスを表示する代わりに、自動起動ステータスを変更するコマンドです。

私の質問に答えがなければ、Ubuntuで自動開始サービスをチェックするのがなぜそんなに難しいのかと思っています。


chkconfig --listうまくいくと思いますか?onは、サービスがそのランレベルで実行されていることを意味し、そのサービスはシステムの起動時に自動的に開始されます。
最大

1
私が質問に投稿したように、chkconfigは常に機能するとは限りません。たとえば、mongodbに対して間違った結果をもたらします。mongodbは/etc/init/mongodb.confを使用して自動起動を行うためだと思います。
SSS

どうls /etc/rc?.d
トキサック

回答:


11

UbuntuはUpstart、従来のinitシステムの代わりに使用します。Upstartはinitよりも強力ですが、それよりも少し複雑ですinit

対照的に、Upstartはイベントベースです。「イベント」は「起動」のようなものである場合もあれば、「ネットワークをすぐに使用する準備ができている」など、より具体的なものである場合もあります。どのスクリプトがどのイベントに依存するかを指定できます。イベントを待機していないものはすべて、使用可能なCPUがあればいつでも実行できます。

このイベントベースのシステムには別の利点があります。理論的には、システムが稼働した後でも使用できます。Upstartは最終的に、サムドライブなどの外部デバイス(現在はudevとhalによって処理されている)、または特定の時間にプログラムを実行(現在cronによって処理されている)などのタスクを引き継ぐ予定です。

これでわかるように、デッドデーモン(起動時に実行されない)が生きていて、イベントのために起動する場合があります。

Ubuntuには、Upstart用の/ etc / initと古いSysVファイル用の/etc/init.dの両方があります。その中のファイルの一部は、まだ移行されていない通常のSysV Initスクリプトです。ただし、移行した一部のサービスは、/ etc / init.dから/ lib / init / upstart-jobへのリンクを維持しています。これらのいずれかを実行すると動作しますが、最初に警告が出力されます。

/etc/init.dを介してinitスクリプトを呼び出すのではなく、service(8)ユーティリティを使用します。例えば service mysql restart

起動しようとしているスクリプトはUpstartジョブに変換されているため、restart(8)ユーティリティ、たとえばmysqlを再起動することもできます。

Upstartマシンでは、initはupstartから取得されます。特定のランレベルのスクリプトを呼び出すマスターrcスクリプトを実行する代わりに、Upstartのinitはジョブディレクトリからジョブを取得します。

これで、自動起動デーモンをリストする簡単な方法はないことがわかりました。すべてのデーモンをリストし、それらを1つずつ確認する必要があります。デーモンは、後のイベントによって、またはそれinit以降によって開始される場合がありますupstart このリストを取得する最も簡単な方法は、シェルで次のコマンドを実行することです。

initctl show-config

出力は次のようになります。

...
hostname
  start on startup
udevtrigger
  start on ((startup and started udev) and not-container)
tty2
  start on (runlevel [23] and ((not-container or container CONTAINER=lxc) or container CONTAINER=lxc-libvirt))
...

最初の項目のようないくつかの項目は非常に単純で、hostname起動時に開始されます。しかし、他のアイテムはより複雑に見えるかもしれません。(しかし幸いなことに人間が読める:-))


あなたが投稿したもののほとんどを知っていました。私が知らない新しい何かがあったとしても、彼らはまだ私の問題を解決することはできません。ジョブを簡単に実行できるコマンドがあるかどうかを知りたいだけです(upstartサービスとinitサービスの両方)。ubuntuにはないようです。お気の毒に!ところで、「initctl」は、従来のinitシステムではなく、upstartサービスのみを処理できます。簡単な方法がない場合は、難しい方法を使用する必要があります...ありがとう。
SSS

私は、ubuntuの誤った最新バージョンがsystemdに移行したわけではないことに注意してください。面白いこと、この答えのかなりの部分はまだ有効である
ジャーニーマンオタク

Ubuntuの新しいバージョンは、成り上がりが、systemdに使用していないunix.stackexchange.com/a/287282/147671を
ジョアン・ピメンテルフェレイラ

5

実際、すべてのサービスは/etc/init.dにのみ存在します。

rc0.d contains the services which runs in runlevel 0
rc1.d contains the services which runs in runlevel 1
rc2.d contains the services which runs in runlevel 2
rc3.d contains the services which runs in runlevel 3
rc4.d contains the services which runs in runlevel 4
rc5.d contains the services which runs in runlevel 5
rc6.d contains the services which runs in runlevel 6

もう1つ、すべてのサービスも下に存在しますがrc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d、これはシンボリックリンク/etc/init.dのみです。

こちらがrc1.dディレクトリの内容です。

lrwxrwxrwx 1 root root  20 Aug 17 14:54 K15pulseaudio -> ../init.d/pulseaudio
lrwxrwxrwx 1 root root  22 Nov 28 18:47 K20acpi-support -> ../init.d/acpi-support
lrwxrwxrwx 1 root root  20 Aug 17 14:54 K20kerneloops -> ../init.d/kerneloops
lrwxrwxrwx 1 root root  23 Nov  7 15:24 K20openbsd-inetd -> ../init.d/openbsd-inetd
lrwxrwxrwx 1 root root  15 Aug 17 14:54 K20saned -> ../init.d/saned
lrwxrwxrwx 1 root root  27 Aug 17 14:54 K20speech-dispatcher -> ../init.d/speech-dispatcher
-rw-r--r-- 1 root root 369 Apr 14  2012 README
lrwxrwxrwx 1 root root  19 Aug 17 14:54 S30killprocs -> ../init.d/killprocs
lrwxrwxrwx 1 root root  19 Aug 17 14:54 S70dns-clean -> ../init.d/dns-clean

ここで、init.dへのシンボリックリンクを確認できます(K15pulseaudio-> ../init.d/pulseaudio)。

しかし、ここではすべてのサービスがinit.dにリンクされていますよね?ただし、すべてのサービスが開始されるわけではありません。その理由は2つのスクリプトです。

最初はSスクリプト(S30killprocs)---> start

2番目はkスクリプト(K15pulseaudio)です---> kill

すべてのKスクリプトサービスはサービスを強制終了し、すべてのSスクリプトサービスはそのランレベルのサービスを開始します。

手短に

S70dns-clean -> ../init.d/dns-cleandns-cleanランレベル1でサービスを開始します。

K15pulseaudio -> ../init.d/pulseaudiopulseaudioランレベル1でサービスを強制終了します。


upstartサービスには当てはまりません。ここにはまったく表示されない場合があります。
ワイルドカード

2

ncursesプログラムであるsysv-rc-confをインストールして、rcレベルをグラフィカルに構成/表示できます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.