systemctlは、レガシーサービスを含むアクティブなすべてのサービスを一覧表示できますか?

systemctlは、レガシーサービスを含むアクティブなすべてのサービスを一覧表示できますか?

この問題Q:「systemctlで有効になっているすべてのサービスをどのように一覧表示しますか?」このページの答えは次のとおりです。

systemctl list-unit-files | grep enabled
systemctl list-unit-files --state=enabled

少なくともsystemdバージョン229(Ubuntu 16.04)以降、systemctl list-unit-filesレガシー初期化スクリプトを介して開始された「LSB」サービスは含まれません。

したがって、元の質問に対する答えはまだ残っているようです。 systemdは、レガシーサービスを含む起動時に起動しようとするすべてのサービス(および他のデバイスタイプ)のリストを表示できますか?

考慮する:

$ systemctl list-units | grep LSB | grep grub
  grub-common.service    loaded    active exited    LSB: Record successful boot for GRUB

$ systemctl list-unit-files | grep enabled | grep grub || echo 'nothing found'
nothing found

$ systemctl is-enabled grub-common
grub-common.service is not a native service, redirecting to systemd-sysv-install
Executing /lib/systemd/systemd-sysv-install is-enabled grub-common
enabled

systemctlgrub-common明示的に要求するとsystemctl有効になったというメッセージが表示されることを理解してください。

それでは、レガシースクリプトを含む起動時に実行しようとするすべてのサービスのリストを表示するようにsystemdを取得する方法はありますか?

答え1

私はあなたが望むコマンドが次のようになると思います。

systemctl list-units --type service --all

私のテストでは、以前のスタートアップサービスのサービスを含むすべてのサービスがリストされています。

源泉:

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-services

答え2

何が欲しいのか信じています

systemctl list-unit-files --type service --state enabled

インストールされているデバイスファイルを一覧表示するために使用されますlist-unit-files(現在のメモリ内のファイルだけでなく)。マニュアルページのいくつかの関連セクション:

  list-units [PATTERN...]             List units currently in memory

  list-unit-files [PATTERN...]        List installed unit files
  
  is-enabled UNIT...                  Check whether unit files are enabled

-t --type=TYPE         List units of a particular type
   --state=STATE       List units with particular LOAD or SUB or ACTIVE state

-a --all               Show all properties/all units currently in memory,
                       including dead/empty ones. To list all units installed
                       on the system, use 'list-unit-files' instead.

以前のバージョンのsystemdでこれは本当ではありません:

本当に古いシステムバージョンでは、「systemctl list-unit-files」はデフォルトのユニットファイルのみを表示します。最新バージョンでは、見つけやすくするために作成されたユニットファイルも表示されます。

生成されたすべてのサービスをis-enabled。一部は return enabled、一部は return disabled、一部は 3 番目の状態 " generated" (すべて) を返します。私はこれについてよくわかりません。

systemctl is-enabled $(systemctl list-unit-files --type service --state generated | awk '/.*\.service/ {print $1}' | tr '\n' ' ') |& grep "^\w*$" | sort | uniq -c | sort -rn

関連リンク

関連情報