GNU/Linux >> Linux の 問題 >  >> Linux

LinuxでSystemdサービスを一覧表示する方法

systemdはシステム管理に関する多くの問題を解決しますが、混乱を招くこともあります。

systemdサービスを一覧表示するような単純なタスクでも、考えさせることができます。

この記事では、systemdサービスを一覧表示する方法を紹介します。また、サービスのさまざまな状態を理解しやすくするために、出力についても説明します。

systemdについてある程度の知識があると思いますが、知識がなくても問題ありません。

systemdでアクティブなサービスを一覧表示する方法

systemdサービスはsystemctlによって管理されます 指図。 systemctlを実行する場合 引数なしで、デフォルトのlist-unitsを呼び出します サブコマンドで、サービス、ソケット、ターゲットなどのさまざまなタイプのsystemdユニットを一覧表示します。

ただし、目的はサービスを一覧表示することであるため、ユニットタイプを--typeで指定します。 このようなフラグ:

systemctl --type=service

list-unitsを指定しなかったことに気づきましたか デフォルトなのでサブコマンド?規則に従いたい場合は、それも指定できます。私はこの方法が好きで、チュートリアルの残りの部分ではこの規則に従います。

systemctl list-units --type=service

どちらの場合も、出力は同じになります。デフォルトでは、このコマンドはロードされたアクティブなサービスのみを表示します アルファベット順:

  UNIT                     LOAD   ACTIVE SUB     DESCRIPTION                                                       
  accounts-daemon.service  loaded active running Accounts Service                                                  
  acpid.service            loaded active running ACPI event daemon                                                 
  alsa-restore.service     loaded active exited  Save/Restore Sound Card State                                     
  apparmor.service         loaded active exited  Load AppArmor profiles                                            
  apport.service           loaded active exited  LSB: automatic crash report generation

出力について説明しましょう:

  • UNIT :systemdユニットの名前。
  • LOAD :ユニット構成ファイルがsystemdによって解析されたかどうか。
  • ACTIVE :ユニットの高レベルの状態。
  • SUB :ユニットの低レベル状態。アクティブなユニットは、実行状態または終了状態になります。この値はサービスタイプによって異なります。

ご覧のとおり、Linuxシステムにロードされているサービスを一覧表示できます。ただし、アクティブなsystemdサービスが実行されているか、(正常に実行された後に)終了する可能性があります。

実行中のすべてのsystemdサービスを一覧表示

アクティブ状態には、実行中、終了などのサブステータスを設定することもできます。同じ--stateを使用できます。 サブステートでフラグを立てます。

実行中のsystemdサービスを一覧表示するには、--state=runningを使用します このようなフラグ:

systemctl list-units --type=service --state=running

これが私のシステムのサンプル出力で、実行中のsystemdサービスの一部を示しています:

  UNIT                        LOAD   ACTIVE SUB     DESCRIPTION                                                     
  accounts-daemon.service     loaded active running Accounts Service                                                
  acpid.service               loaded active running ACPI event daemon                                               
  avahi-daemon.service        loaded active running Avahi mDNS/DNS-SD Stack                                         
  bluetooth.service           loaded active running Bluetooth service                                               
  bolt.service                loaded active running Thunderbolt system service        
非アクティブなサービスを含むすべてのロードされたsystemdサービスを一覧表示します

デフォルトでは、systemctlコマンドはロードされたアクティブなユニットのみを表示します。

非アクティブなサービスを含む、ロードされているすべてのサービスを一覧表示する場合は、--allを使用します。 フラグ:

systemctl list-units --all --type=service

非アクティブなサービスも表示されるようになりました:

  UNIT                                                  LOAD      ACTIVE   SUB     DESCRIPTION                                                                     
  accounts-daemon.service                               loaded    active   running Accounts Service                                                                
  acpid.service                                         loaded    active   running ACPI event daemon                                                               
  alsa-restore.service                                  loaded    active   exited  Save/Restore Sound Card State                                                   
  alsa-state.service                                    loaded    inactive dead    Manage Sound Card State (restore and store)                                     
  anacron.service                                       loaded    inactive dead    Run anacron jobs                                                                
  apparmor.service                                      loaded    active   exited  Load AppArmor profiles 
すべての非アクティブなsystemdサービスを一覧表示

非アクティブなサービスのみを表示する場合は、--allなどのさまざまなフラグを組み合わせることができます。 および--state このように:

systemctl list-units --all --type=service --state=inactive

出力からわかるように、すべての非アクティブなsystemdサービスが表示されます:

  UNIT                                   LOAD      ACTIVE   SUB  DESCRIPTION                                                                     
  alsa-state.service                     loaded    inactive dead Manage Sound Card State (restore and store)                                     
  anacron.service                        loaded    inactive dead Run anacron jobs                                                                
  apport-autoreport.service              loaded    inactive dead Process error reports when automatic reporting is enabled                       
  apt-daily-upgrade.service              loaded    inactive dead Daily apt upgrade and clean activities                                          
  apt-daily.service                      loaded    inactive dead Daily apt download activities                                                   
● auditd.service                         not-found inactive dead auditd.service                              

インストールされているすべてのsystemdサービスを一覧表示します(ロードされていない場合でも)

すべてのsystemdユニットには、サービス、ソケット、その他のユニットを問わず、

のユニットファイルがあります。
systemctl list-unit-files --type=service

表示される内容は次のとおりです。

UNIT FILE                                  STATE           VENDOR PRESET
accounts-daemon.service                    enabled         enabled      
acpid.service                              disabled        enabled      
alsa-restore.service                       static          enabled      
alsa-state.service                         static          enabled      
alsa-utils.service                         masked          enabled      
anacron.service                            enabled         enabled      
apparmor.service                           enabled         enabled      
apport-autoreport.service                  static          enabled      
[email protected]                    static          enabled     

各状態タイプの説明は長すぎるため、この記事の範囲外です。たぶん私はそれについて将来書くつもりです。

各起動時に自動的に実行されるすべてのsystemdサービスを一覧表示します

システムが起動するたびに自動的に実行されるすべてのsystemdサービスを表示するには、次のコマンドを使用します。

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

有効な状態と混同していませんか?それは正常です。多くの新規ユーザーは、有効なシステムサービスと実行中のサービスを混同しています。

ただし、systemdサービスが有効になっているということは、システムの起動時にサービスが自動的にアクティブ化されることを意味します。

UNIT FILE                                  STATE   VENDOR PRESET
accounts-daemon.service                    enabled enabled      
anacron.service                            enabled enabled      
apparmor.service                           enabled enabled      
[email protected]                            enabled enabled      
avahi-daemon.service                       enabled enabled      
binfmt-support.service                     enabled enabled      
bluetooth.service                          enabled enabled      
console-setup.service                      enabled enabled      
containerd.service                         enabled enabled      
cron.service                               enabled enabled      
cups-browsed.service                       enabled enabled      
cups.service                               enabled enabled      
dbus-fi.w1.wpa_supplicant1.service         enabled enabled      

ベンダープリセットに気づきましたか?前の例にもありました。

ベンダープリセットは、プログラムがインストールされたときのsystemdユニットの自動動作を定義します。

新しいプログラムXYZをインストールしたとします。このXYZには、ベンダープリセットが有効になっているxyz.serviceというsystemdサービスがあります。これは、プログラムのインストール後、システムを起動すると、このxyz.serviceが起動時に自動的にアクティブ化されることを意味します。

ベンダープリセットが無効になっている場合は、手動で有効に設定する必要があります。有効にすると、起動するたびに自動的に起動します。

sudo systemd enable xyz.service
特定のsystemdサービスのステータスを表示します

これまで、サービスを一覧表示するさまざまな方法を見てきました。しかし、単一のサービスに焦点を当てたものはありません。

statusを使用して、systemdサービスの詳細情報を取得できます systemctlのサブコマンド。タブ補完はこのコマンドで機能します。

systemctl status <service_name>

ネットワークマネージャサービスの例を次に示します。

[email protected]:~$ systemctl status NetworkManager.service 
● NetworkManager.service - Network Manager
     Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2020-07-23 08:12:44 IST; 3h 8min ago
       Docs: man:NetworkManager(8)
   Main PID: 711 (NetworkManager)
      Tasks: 3 (limit: 9157)
     Memory: 13.6M
     CGroup: /system.slice/NetworkManager.service
             └─711 /usr/sbin/NetworkManager --no-daemon

Jul 23 08:12:50 itsfoss NetworkManager[711]: <info>  [1595472170.7159] device (wlp58s0): Activation: successful, device activated.
Jul 23 08:12:50 itsfoss NetworkManager[711]: <info>  [1595472170.7179] manager: startup complete
Jul 23 08:12:51 itsfoss NetworkManager[711]: <info>  [1595472171.5592] manager: NetworkManager state is now CONNECTED_GLOBAL
Jul 23 08:12:52 itsfoss NetworkManager[711]: <info>  [1595472172.7973] dhcp6 (wlp58s0): activation: beginning transaction (timeout in 45 seconds)
Jul 23 08:12:52 itsfoss NetworkManager[711]: <info>  [1595472172.8017] policy: set 'JioFi3_215810' (wlp58s0) as default for IPv6 routing and DNS
Jul 23 08:12:52 itsfoss NetworkManager[711]: <info>  [1595472172.8058] dhcp6 (wlp58s0): option dhcp6_name_servers   => 'fe80::a8dc:79ff:fe1b:57fe'
Jul 23 08:12:52 itsfoss NetworkManager[711]: <info>  [1595472172.8059] dhcp6 (wlp58s0): state changed unknown -> bound
Jul 23 08:12:59 itsfoss NetworkManager[711]: <info>  [1595472179.9251] agent-manager: agent[bdd71d4a66098713,:1.84/org.gnome.Shell.NetworkAgent/1>
Jul 23 11:18:10 itsfoss NetworkManager[711]: <info>  [1595483290.7874] manager: NetworkManager state is now CONNECTED_SITE
Jul 23 11:18:11 itsfoss NetworkManager[711]: <info>  [1595483291.5893] manager: NetworkManager state is now CONNECTED_GLOBAL

サービスの状態、サービスのマニュアルページ、消費するメモリ、プロセスIDなど、多くの有用な情報が提供されていることがわかります。また、サービスの最後のいくつかのジャーナルログも表示されます。

シェルスクリプトでサービスがアクティブかどうかを確認する場合は、is-activeを使用できます。 サブコマンド。アクティブの場合、出力は0です。

systemctl is-active application.service

同様に、サービスが有効になっているかどうか(起動時に自動的に開始するように設定されているかどうか)を確認する場合は、is-enabledを使用できます。 サブコマンド。有効なサービスの出力は0です。

systemctl is-enabled application.service
結論

これで、systemdサービスの一覧表示について理解が深まったと思います。 systemdおよびsystemctlコマンドについていくつかの新しいことを学んだことを願っています。

コメントセクションでフィードバック、質問、提案を提供することを躊躇しないでください。


Linux
  1. Linuxでサービスを管理および一覧表示する方法

  2. LinuxでSystemdサービスを作成する方法

  3. Linuxsystemdに新しいサービスを追加する

  1. LinuxでSystemctlを使用してSystemdサービスを管理する方法

  2. Linux – Default.targetなしでSystemdを開始するにはどうすればよいですか?

  3. systemd サービスを停止する方法

  1. Systemctlコマンドを使用してSystemdサービスを管理する方法

  2. Linux – SystemdでTtyを減らす方法は?

  3. Linux サービスが自動起動しないようにするにはどうすればよいですか?