私のコンピュータで実行されているすべてのサービスを印刷しようとしています。このために私はコマンドを使用します
a=$(sudo systemctl list-units --type service --all | grep running | awk -v OFS='\t' '{ print $1, $2, $4 }')
上記のコマンドの出力は次のようになります。
abrt-xorg.service loaded running
abrtd.service loaded running
accounts-daemon.service loaded running
atd.service loaded running
auditd.service loaded running
avahi-daemon.service loaded running
bolt.service loaded running
chronyd.service loaded running
colord.service loaded running
crond.service loaded running
cups.service loaded running
dbus.service loaded running
firewalld.service loaded running
gdm.service loaded running
grafana-server.service loaded running
gssproxy.service loaded running
influxdb.service loaded running
irqbalance.service loaded running
ksmtuned.service loaded running
libstoragemgmt.service loaded running
libvirtd.service loaded running
lvm2-lvmetad.service loaded running
最初の列はサービス名、2番目の列はロード状態、3番目の列は実行状態です。
各列の出力の上にヘッダーが必要です。
column name loading status running status
どうすればいいですか…助けてください
私はコマンドを実行しましたsystemctl list-unit-files
結果の出力は次のとおりです。
UNIT FILE STATE
proc-sys-fs-binfmt_misc.automount static
dev-hugepages.mount static
dev-mqueue.mount static
proc-fs-nfsd.mount static
答え1
BEGIN
awk
タイトルを印刷するには、コマンドに使用します。
systemctl list-units --type service --all | awk 'BEGIN{print "Unit State Status"};$4 ~ /^running$/{print $1,$2,$4}' | column -t
column -t
読みやすい出力を得るためにパイプで接続することができます。列4が一致していることを確認するawk
代わりに使用することもできます。grep
running
他のコメントで述べたように、実行中のサービスを使用またはフィルタリングするsystemctl list-units --type service --state=running
代わりに実行することもできます。grep
awk