起動時に開始するすべてのサービスを一覧表示する


15

すべてのサービス(/etc/init.dまたはupstartまたはsystemd)のリストを取得する方法を探しています。これらのサービスは、ブートを開始する(または開始された)はずです。

すべての開始サービスのリストを取得するにはどうすればよいですか?—私はその質問を知っており、それを使用することを提案しますservice --status-all

しかし、それは私に、どのサービスが実行されることが想定されているかを示していません。すべてのinitスクリプトを「status」引数で呼び出します。これは、実行中の可能性があるすべてのサービスのリストです。

しかし、ブート時に開始されたサービスがまだ実行中かどうかを知りたいです。

例…

webfsがインストールされています。しかし、ブート時に実行されたくありません。したがって、無効にしましたsudo update-rc.d webfs disable。また、sambaがインストールされており、ブート時に実行されるはずです。しかし、(何らかの理由で)停止します。sudo service --status-allここで私を助けてくれません:

$ sudo service --status-all 2>/dev/null | grep -E 'samba$|webfs'
 [ - ]  samba
 [ - ]  webfs

両方ともオフですが、1つ(サンバ)がオンになっているはずです。

そう…

ブート時に開始されているすべてのサービスのリストを取得するにはどうすればよいですか?また、拡張機能として、これらのサービスの「ステータス」を取得する簡単な方法があります(そうでない場合は、単純にこのリストをループして「service $ service status」などを実行します)。

ありがとう、アレクサンダー

編集2015-05-04: Ubuntu 14.04を使用しています。

この質問の主な焦点は次のとおりです。

しかし、ブート時に開始されたサービスがまだ実行中かどうかを知りたいです。

このため、initctl listあまり役に立ちません。/etc/init.dスクリプトによって開始されたサービスを考慮に入れていません(スクリプトのupstartスクリプトと比較して/etc/init)。

のリスト/etc/rc?.d/S*も役に立たない。指定されたランレベルで開始されたサービスのリストを生成します。開始されるはずのサービスがまだ実行されている場合、それは表示されません。

基本的に、svcs -xSolaris for Ubuntuのようなものを探しています。を使用するとsvcs -x、開始されたサービスがもう実行されていない場合に出力されます。これは、Ubuntuにも必要です。

理由:私は、Icinga / Nagios監視システムの(多かれ少なかれ...)汎用チェックを行いたいと思っています。多くの異なる顧客のために多くの異なるサーバーを持っているので、「重要な」サービスのリストを定義するために実際にスケーリングしません。


どのUbuntuバージョンですか?
AB


その問題の受け入れ答えがある@Parto initctl listたリストで実行/開始されたプロセスが、そのリストを手動で起動しているプロセスも含まれる
Sergiy Kolodyazhnyy

@AB Ubuntu 14.04を使用しています。
アレクサンダースクワー

@ Partoaskubuntu.com / questions / 218 / はまったく答えを提供していません。@Sergが書いたように、そこでの答えはを使用することinitctl listでした。しかし、手動で開始されたサービスも表示されるため、それは実際には答えません。また、実行されていないサービスは表示されません。
アレクサンダースクワー

回答:


19

すべてのサービスは起動時に開始されます:

initctl list

システムに存在するすべてのサービスのリスト:

service --status-all

違う。有効化されたサービス(起動時に開始)のリストも提供しません。すべての既知のサービス(一部は無効になっている可能性があります)と、それらが現在実行されているかどうか(必ずしも自動的に開始されるわけではありません)が表示されます。
Reinierポスト

2

これが私のワンライナーです grep -i 'runlevel' /etc/init/* | awk '!/#/ && /start on/ && /2/ {gsub("/"," "); print $0 }' | cut -d ' ' -f4-

少しきれいな出力を実現できます grep -i 'runlevel' /etc/init/* | awk '/start on/ && /2/ {gsub("/"," "); gsub(":", " ");gsub(".conf"," "); print $3 }'

次に、詳細に入ります。アップスタートジョブはすべてに保存され/etc/init/ますよね?そこにあるジョブにはすべて、開始するランレベルを示す行があります。ランレベル2は、通常のブート、デフォルトのランレベルです。そのため、grepのすべての行をgrep runlevelでgrepしstart on、実行レベル#2の行のみに一致するようにawkで出力をクリーンアップすると、upstartジョブのリストが取得されます。残りはフォーマットのニーズに合わせて、ファイル名の/をスペースに置き換え、それらのファイルへのパスを切り取り、ファイル名自体を残します。

!/#/一部では、私が個人的に手動で追加していた可能性がコメントアウトスタートディレクティブを、対処することです。

とりわけ/etc/rc2.d、(私が正しく理解していれば)優先度の低いスクリプトがある場所があります。

そのための粗いワンライナーは: ls /etc/rc2.d/* | grep S | awk '{sub("S"," "); print $2}

ランレベル2で実際に実行されるそのフォルダー内のスクリプトは、Sで始まり、その後に優先度番号が続く名前が付けられます。さて、基本的には、Sで始まるすべてのファイルを取得し、それらを優先度の名前のみでリストします(それをクリーンアップする方法を理解する必要があります)。

muruがコメントで適切に指摘しているように、/etc/init/*.overrideファイルもあります。このファイルは、「。。。構成ファイルを直接変更することなくジョブの実行方法を変更する」(init manpage

現時点では、これらのファイルについてあまり経験がないので、「grep 'manual' /etc/init/*.override」を使用して開始するように指示されたサービスを一覧表示することによってのみ、これらの.overrideファイルを調べることをお勧めしますinitctlまたはservicesコマンドを使用して手動で。


イベントの依存関係のため、特定のサービスによって他のサービスが開始されるかどうかを簡単に判断できないことに注意してください。.overrideファイルの小さな問題もあります。
ムル

@Sergありがとう。しかし、それは新興企業だけを扱っています。また、「ls /etc/rc2.d/* ...」はあまり役に立ちません。どのサービスが開始された可能性があるかが表示されます。ただし、まだ実行されているサービスは表示されません。私の投稿の要点は明確ではなかったと思います。私は探しています:しかし、ブート時に開始されたサービスがまだ実行されているかどうかを知りたいです。 Solarisを知っているかどうかわからない。そこで、「svcs -x」を実行するだけで、何かを返す場合は、何かが実行されていないことがわかります。Ubuntuにはこのようなものが必要です。
アレクサンダースクワー

さて、スクリプトまたはbashrc関数を記述して、そこにある1つのライナーとinitctlリストの出力を比較できます。投稿してほしいですか?
セルギーKolodyazhnyy

@Sergよく—あなたが提供している場合;)
アレクサンダー・スクワー

2

すべてのサービスとそれぞれのランレベルステータスを一覧表示します-chkconfigスタイル:

# sysv-rc-conf --list

acpid        2:on       3:on    4:on    5:on
apache-htcac 0:off      1:off   2:off   3:off   4:off   5:off   6:off
apache2      0:off      1:off   2:on    3:on    4:on    5:on    6:off

リストされたすべてのインタラクティブなテキストベースの編集:

# sysv-rc-conf

l SysV Runlevel Config   -: stop service  =/+: start service  h: help  q: quit qk
x 
x service      1       2       3       4       5       0       6       S 
x ----------------------------------------------------------------------------
x acpid       [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x apache-ht$  [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]
x apache2     [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x
x Use the arrow keys or mouse to move around.      ^n: next pg     ^p: prev pg
x                        space: toggle service on / off

ない場合はインストールする必要があります:

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