获取 GUI 应用程序进程的报告

获取 GUI 应用程序进程的报告

我想以这种格式列出主要应用程序进程报告

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

相关内容