我想以这种格式列出主要应用程序进程报告
ps -e -o pid,comm,pmem,pcpu,uname
过滤主 GUI 应用程序wmctrl -pl
是我获取进程 ID 的唯一方法。如果xlsclients
可以使用,那就太好了。它包含我想要的真实姓名列表。
如何将它们组合为单个命令以获得我想要的报告。 (ps -p = xlsclients -p)
答案1
通常情况下,在 Unix 中,您可以将命令链接在一起,并且通常会专门构建许多命令,以便它们可以与其他命令生成的输出一起使用。
幸运的是,您可以获取并解析它的输出xlsclients
,以便它只是命令的名称。然后,您可以将此信息传递给ps
命令以获取您正在查找的输出:
$ xlsclients
dufresne conky -c /home/slm/.conky/b.conf
dufresne cinnamon-session
dufresne cinnamon-settings-daemon
dufresne csd-locate-pointer
dufresne clipit
$ xlsclients | cut -d" " -f3 | paste - -s -d ','
conky,cinnamon-session,cinnamon-settings-daemon....
然后,您可以将此进程名称列表提供给-C
的交换机ps
。
$ ps -o pid,comm,pmem,pcpu,uname \
-C $(xlsclients | cut -d" " -f3 | paste - -s -d ',')
笔记:我们已经删除了这个-e
开关,因为我们现在提供了一个列表ps
。
例子
$ ps -o pid,comm,pmem,pcpu,uname \
-C "$(xlsclients | cut -d" " -f3 | paste - -s -d ',')" | head
PID COMMAND %MEM %CPU USER
1998 cinnamon-launch 0.2 0.0 slm
2031 cinnamon 6.5 0.7 slm
16736 cinnamon-launch 0.3 0.0 slm
16738 cinnamon 6.1 2.7 slm
16994 cinnamon-sessio 0.2 0.0 slm
17231 cinnamon-settin 0.4 0.0 slm
17293 csd-locate-poin 0.2 0.0 slm
17331 nm-applet 0.3 0.0 slm
17339 clipit 0.2 0.1 slm
答案2
$ ps -o pid,comm,pmem,pcpu,uname \ -C "$(xlsclients | cut -d" " -f3 | 粘贴 -s -d ',')" |头 PID 命令 %MEM %CPU 用户 1998 肉桂发射 0.2 0.0 slm 2031 肉桂 6.5 0.7 slm 16736 肉桂发射 0.3 0.0 slm 16738 肉桂 6.1 2.7 slm 16994 肉桂会话 0.2 0 .0 slm 17231 肉桂设置 0.4 0.0 slm 17293 csd-locate -点 0.2 0.0 slm 17331 nm 小程序 0.3 0.0 slm 17339 剪辑 0.2 0.1 slm