Obter relatório dos processos de aplicação gui

1

Eu quero listar o relatório dos principais processos de aplicativos neste formato

ps -e -o pid,comm,pmem,pcpu,uname

Para filtrar os principais aplicativos da GUI wmctrl -pl é a única maneira de obter processos ids.excelente se xlsclients puder ser usado. Ele contém a lista real com os nomes que eu quero.

Como posso combiná-los como comandos únicos para obter o relatório que desejo. (ps -p = xlsclients -p)

    
por Oshanz 28.07.2014 / 21:17

1 resposta

2

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
    
por 28.07.2014 / 23:44