systemD ロードおよびアクティブなデバイス状態

systemD ロードおよびアクティブなデバイス状態

好奇心に尋ねます。

RHEL7システム管理ガイド(https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Services.html#sect-Managing_Services_with_systemd-Services-List)

次のコマンドは、ロードされたすべてのデバイスを一覧表示する必要があります。

systemctl list-units --type service --all

ただし、実際にはロードされたすべてのサービスは一覧表示されず、有効または有効になっているサービスのみが一覧表示されます。

たとえば、

[root@roman-centos system]# systemctl list-units --type service --all | grep httpd
[root@roman-centos system]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:httpd(8)
           man:apachectl(8)

これが必要な方法ですか、それともドキュメント/コードのバグかもしれませんか?

答え1

「ロード済み」とは、systemd がディスクからメモリにデバイスを読み込んだことを意味します。これは、デバイス(ステータスなど)を「表示」するたびに、デバイスが起動したとき、またはデバイスがロードされている他のデバイスに依存しているときに発生します。

ここで誤解は「systemctl status」がいつもsystemdはステータスを表示するためにデバイスをロードするため、デバイスを「ロード済み」とマークします。他の目的でデバイスが不要になった場合、そのデバイスはすぐに削除されます。

ディスクに見つかったすべての可能なユニットのリストを表示するには、「systemctl list-unit-files」を使用します。

答え2

権威ある文書systemctlはRed Hat文書ではありませんが、次のようman systemctlになります。man systemctl

`--type service` should "limit the output to only services."
`--all` should "how all loaded units, regardless of their state, including inactive units. "

したがって、あなたが提供するコマンドは、ロードされたすべての項目をリストする必要があります。提供する非アクティブデバイスを含む状態に関係なくデバイス。

Ubuntu 16.04、バージョン229でテストしたときにロードさsystemdれたが無効になっているデバイスが出力に報告されない問題を再現しました。これは文書化された動作と一致します。

この動作はドキュメントと一致するため、これはsystemdのバグであるようです。私は持っていますsystemdを使用してエラー報告を開くこの問題について。

関連情報