Linux
如何使用自定義標頭列印 awk 命令的結果
我試圖在我的機器上列印所有正在執行的服務。為此,我使用命令
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
第一列是服務名稱,第二列是載入狀態,第三列是執行狀態…
在每列的輸出上方,我需要標題為
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
BEGIN
在您的awk
命令中使用以列印標題:systemctl list-units --type service --all | awk 'BEGIN{print "Unit State Status"};$4 ~ /^running$/{print $1,$2,$4}' | column -t
您可以通過管道將其輸入
column -t
以獲得良好的可讀輸出。您也可以使用awk
而不是grep
檢查第 4 列是否匹配running
。正如其他評論中提到的,您也可以執行
systemctl list-units --type service --state=running
而不是使用grep
或awk
過濾掉正在執行的服務。