Muitas vezes é o caso que no Unix você pode encadear comandos juntos, e muitas vezes muitos comandos são construídos especificamente para que eles trabalhem com a saída gerada por outros comandos.
Felizmente você pode pegar a saída de xlsclients
e analisá-la para que seja apenas o nome do comando. Você pode então passar essa informação para o comando ps
para obter a saída que está procurando:
$ 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....
Você pode, então, fornecer essa lista de nomes de processos à opção -C
de ps
.
$ ps -o pid,comm,pmem,pcpu,uname \
-C $(xlsclients | cut -d" " -f3 | paste - -s -d ',')
OBSERVAÇÃO: removemos a opção -e
, pois agora estamos fornecendo uma lista para ps
.
Exemplo
$ 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