サーバのアップデート兼移行のためインストールしているパッケージやサービスの状態を調べたりしています。
この記事では、systemctlの起動中や自動起動になっているサービス一覧を取得していきます。
起動中のサービス一覧を表示するコマンド
ステータスがactive
になっているサービスのリストを表示する。
# systemctl list-units --type=service
list-units
はデフォルトでアクティブなユニットのみを表示します。--type
は表示するタイプを指定します。 カンマ区切りで複数指定できる--type=service,socket
。service
の他にsocket
やmount
やdevice
などあり、--type=service
を取って実行するといっぱい出てきて面白い。
▼ 実行した例 (CentOS 7.9)
$ sudo systemctl list-units --type=service
[sudo] suzu6 のパスワード:
UNIT LOAD ACTIVE SUB DESCRIPTION
abrt-ccpp.service loaded active exited Install ABRT coredump hook
abrt-oops.service loaded active running ABRT kernel log watcher
abrtd.service loaded active running ABRT Automated Bug Reporting Tool
atd.service loaded active running Job spooling tools
auditd.service loaded active running Security Auditing Service
chronyd.service loaded active running NTP client/server
crond.service loaded active running Command Scheduler
dbus.service loaded active running D-Bus System Message Bus
firewalld.service loaded active running firewalld - dynamic firewall daem
getty@tty1.service loaded active running Getty on tty1
...
- UNIT: systemdユニット名
- LOAD: ユニットの構成がsystemdによって解析されたかどうか。ロードされたユニットの設定はメモリに保持されます。
- ACTIVE: ユニットがアクティブかどうかに関する状態概要。これは通常、ユニットが正常に起動したかどうかを判断する極めて基本的な方法です。
- SUB: 低レベルの状態を表し、ユニットに関するより詳細な情報を示します。多くの場合、ユニットのタイプ、状態、および実際のユニットの実行方法によって異なります。
- DESCRIPTION: ユニットの内容/実行内容の短いテキストによる説明。
全てのサービスの状態を表示する
list-units
はデフォルトでアクティブなユニットのみを表示するため、全ての状態を表示したい場合はオプション--all
を付ける。
# systemctl list-units --all --type=service
▼ 実行した例 (CentOS 7.9)
$ sudo systemctl list-units --all --type=service
UNIT LOAD ACTIVE SUB DESCRIPTION
abrt-ccpp.service loaded active exited Install ABRT coredump hook
abrt-oops.service loaded active running ABRT kernel log watcher
abrt-vmcore.service loaded inactive dead Harvest vmcores for ABRT
abrt-xorg.service loaded inactive dead ABRT Xorg log watcher
abrtd.service loaded active running ABRT Automated Bug Reporting Tool
atd.service loaded active running Job spooling tools
auditd.service loaded active running Security Auditing Service
chronyd.service loaded active running NTP client/server
cpupower.service loaded inactive dead Configure CPU power related settings
crond.service loaded active running Command Scheduler
dbus.service loaded active running D-Bus System Message Bus
● display-manager.service not-found inactive dead display-manager.service
dm-event.service loaded inactive dead Device-mapper event daemon
ACTIVEの状態はactive
, inactive
, failed
と3種類ありました。
すべてのユニットファイルの一覧と自動起動の状態
list-unitsコマンドは、systemdが解析してメモリにロードしようとしたユニットのみを表示します。systemdは必要と判断したユニットしか読み込まないめ、必ずしもシステムで利用可能なユニットすべてが表示されるとは限りません。systemdがロードしないものを含め、systemdパス内の利用可能なユニットファイルをすべて表示するには、 list-unit-filesコマンドを使用します。
ついでにSTATEのカラムで自動起動の有効無効が確認できる。
# systemctl list-unit-files --type=service
▼ 実行した例 (CentOS 7.9)
$ sudo systemctl list-unit-files --type=service
UNIT FILE STATE
abrt-ccpp.service enabled
abrt-oops.service enabled
abrt-pstoreoops.service disabled
abrt-vmcore.service enabled
abrt-xorg.service enabled
abrtd.service enabled
arp-ethers.service disabled
atd.service enabled
auditd.service enabled
autovt@.service enabled
blk-availability.service disabled
brandbot.service static
chrony-dnssrv@.service static
chrony-wait.service disabled
chronyd.service enabled
console-getty.service disabled
console-shell.service disabled
lines 1-18
enabled
: 自動起動有効disabled
: 自動起動無効static
: おそらくプロセスとかがないタイプのサービス、たぶん
個別のサービスの状態は↓で確認できる
$ systemctl is-enabled chronyd.service
enabled