web-dev-qa-db-ja.com

systemctlは、すべての可能な(無効なものを含む)サービスをリストします

/etc/init.d/XXスクリプトから発生する「サービス」があり、systemd wrapper が生成されます。どのランレベルでも自動起動しません。systemctl --allまたはsystemctl list-unit-files --allを実行しても、どのリストにも表示されません。

私の直感は、依存関係がなく、起動されていないため、systemdに「ロード」されていない(つまり、有効化されていない、ロードされていない)ため、systemdはそれをリストしません。

まだ開始されておらず、自動開始されていないものも含めて、可能なすべてのサービスのfullリストを取得する方法はありますか?または、systemctl searchと同等のものを使用しますか?

これに関連する question は、ブート時に試行されるサービスのリストを要求するだけです。

「--all」の下にあるmansystemctlpage は、

システムにインストールされているすべてのユニットを一覧表示するには、代わりにlist-unit-filesコマンドを使用します

ただし、これらの無効なユニットはlist-unit-filesの出力には表示されません。

2
rogerdpack

「私は「systemdの人」と尋ねましたが、古いバージョンでは、manページに次のように書かれているにもかかわらず、すべてがリストされているわけではない、と彼らは言っています。

   -a, --all
       When listing units, show all loaded units, regardless of their
       state, including inactive units. When showing unit/job/manager
       properties, show all properties regardless whether they are set or
       not.

       To list all units installed on the system, use the list-unit-files
       command instead.

上記の機能のほとんどは、「my」systemdバージョンsystemd 219(CentOS 6)では実際には発生しないようです。しかし、バージョンsystemd 232のDebian 9のsystemctlの新しいバージョンでは修正されているようです。おそらくそれが理由です。

Init.dスクリプトdoesを指定すれば、古いsystemdバージョンで通常(ステータス、開始、停止)のようにそれらを制御できます。ランレベルですが、すべての/etc/rc?.d dirs(la chkconfig --del my_serviceまたはそれに相当するsystemctl disable my_service、またはchkconfigが最初に実行されなかった場合)には存在しません。次に、systemd-sysv-generator systemdの古いバージョンでは、正常に動作していても制御可能であるにもかかわらず、systemctl list-units --allなどを実行しても[リストに表示されます] [2]ません。または、それらが通常のサービスであるが無効になっている場合、まだ機能しているにもかかわらず、どのリストにも表示されないようです。

ref: https://lists.freedesktop.org/archives/systemd-devel/2019-May/042555.html

2
rogerdpack

これらのコマンドをrootとして実行していますか? list-unit-filesコマンドはまさにあなたが探しているものだと思います。ロードされたサービスのリストだけでなく、ユニットファイルもリストされます。サービスの構成方法に関する問題を検討していると思います。

ダミーサービスを作成することから始めて、それが登録されていることを確認してください。実際には何もしない何か。次に、それが機能すると、機能していないサービスとの違いを確認できます。または、サービスユニットファイルを、動作している単純なサービスの1つと比較します。

1
Callan