すべてのサービス(/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 -x
Solaris for Ubuntuのようなものを探しています。を使用するとsvcs -x
、開始されたサービスがもう実行されていない場合に出力されます。これは、Ubuntuにも必要です。
理由:私は、Icinga / Nagios監視システムの(多かれ少なかれ...)汎用チェックを行いたいと思っています。多くの異なる顧客のために多くの異なるサーバーを持っているので、「重要な」サービスのリストを定義するために実際にスケーリングしません。
initctl list
たリストで実行/開始されたプロセスが、そのリストを手動で起動しているプロセスも含まれる
initctl list
でした。しかし、手動で開始されたサービスも表示されるため、それは実際には答えません。また、実行されていないサービスは表示されません。