Ubuntuでは、
私はグーグルとIRCをやった。答えが見つかりません。 Ubuntuにはそのようなコマンドが存在しないかもしれません。最初は、すべての自動起動サービスが/etc/rc2.d/
の下にあると思っていましたが、それは間違っていました。いくつかは/etc/init/*.conf
でのみ設定されます。次に、chkconfig
ツール(手動でインストール)を試しましたが、常に機能しません。たとえば、/etc/init/mongodb.conf
から自動起動されるmongodb
に対して誤った結果が返されます。
service --status-all
およびinitctl list
は、自動開始ステータスではなく、サービスの現在のステータスのみを通知できます。 update-rc.d
は、ステータスを表示する代わりに自動開始ステータスを変更するコマンドです。
私の質問に対する答えがない場合、私はなぜUbuntuで自動起動サービスをチェックすることがとても難しいのだろうと思っています。
Ubuntuは、従来のUpstart
システムの代わりにinit
を使用します。 Upstartはinitよりも強力ですが、init
よりも少し複雑です。
対照的に、新興企業はイベントベースです。 「イベント」は「起動中」のようなものにすることもできますし、「ネットワークがすぐに使用できるようになった」など、より具体的なものにすることもできます。どのスクリプトがどのイベントに依存するかを指定できます。イベントを待機していないものは、CPUが利用可能になるといつでも実行できます。
このイベントベースのシステムにはもう1つの利点があります。理論的には、システムが稼働した後でも使用できます。 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から取得されます。 Upstartのinitは、特定のランレベルのスクリプトを呼び出すマスターrcスクリプトを実行する代わりに、ジョブディレクトリからジョブを取得します。
これで、自動起動デーモンを一覧表示する簡単な方法がないことがわかりました。すべてのデーモンを一覧表示し、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
は起動時に始まります。しかし、他のアイテムはもっと複雑に見えるかもしれません。 (しかし幸いなことに人間が読める:-))
実際、すべてのサービスは/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
さらに、すべてのサービスは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)--->開始です
2つ目はkスクリプト(K15pulseaudio)---> killです
すべてのKスクリプトサービスはサービスを強制終了し、すべてのSスクリプトサービスはそのランレベルのサービスを開始します。
簡単に
ランレベル1でS70dns-clean -> ../init.d/dns-clean
start dns-clean
サービス.
ランレベル1のK15pulseaudio -> ../init.d/pulseaudio
kills pulseaudio
service.
Ncursesプログラムであるsysv-rc-confをインストールして、rcレベルをグラフィカルに構成/表示できます。
すべての自動開始サービスのリストを表示するコマンドはありますか?
ここを見てください: pdate-rc-d-cheat-sheet
起動時にサービスが自動起動するかどうかを確認するコマンドはありますか?
なし、私は知っています(これは何も意味しません;)が、ここから読み始めることができます。 askubuntuフォーラム-サービスの依存関係