Recuperar o uso do CPU e o uso da memória de um único processo no Linux?

quero obter a CPU e o uso da memória de um único processo no Linux - conheço o PID. Espero conseguir isso a cada segundo e escrevê-lo para um CSV usando o comando "watch". Que Comando posso usar para obter esta informação a partir da linha de comandos Linux?

Author: jww, 2009-08-03

15 answers

ps -p <pid> -o %cpu,%mem,cmd

(pode deixar de fora "cmd", mas isso pode ser útil na depuração).

Note que isto dá uma utilização média da CPU do processo ao longo do Tempo em que está a correr.

 177
Author: caf, 2017-11-14 01:10:43

Uma variante da resposta de caf : top -p <pid>

Isto actualiza automaticamente a utilização do CPU, por isso é bom para a monitorização.

 54
Author: Manki, 2017-05-23 12:26:24

Você pode obter os resultados pelo nome do processo usando

ps -C chrome -o %cpu,%mem,cmd

A opção -C permite-lhe usar o nome do processo sem saber que é pid.

 31
Author: amit, 2014-07-21 13:08:45

Utilize o pidstat (do sysstat - consulte a ligação).

Por exemplo, para monitorizar estes dois IDs de processo (12345 e 11223) a cada 5 segundos, use

$ pidstat -h -r -u -v -p 12345,11223 5
 16
Author: Neon, 2016-03-24 12:35:53

Lançar um programa e monitorá-lo

Este formulário é útil se quiser comparar facilmente um executável:

topp() (
  $* &>/dev/null &
  pid="$!"
  trap ':' INT
  echo 'CPU  MEM'
  while sleep 1; do ps --no-headers -o '%cpu,%mem' -p "$pid"; done
  kill "$pid"
)
topp ./myprog arg1 arg2

Agora, quando carregar em Ctrl + C, Sai do programa e pára a monitorização. Saída da amostra:

CPU  MEM
20.0  1.3
35.0  1.3
40.0  1.3

Testado em Ubuntu 16.04.

Você pode usar top -b e grep para fora o pid que deseja (com a opção -b corre no modo de lote), ou também usar a opção -p e indicar o pid sem usar o grep.

 4
Author: Alberto Zaccagni, 2013-04-19 15:50:44
ps aux | awk '{print $4"\t"$11}' | sort | uniq -c | awk '{print $2" "$1" "$3}' | sort -nr

Ou por processo

ps aux | awk '{print $4"\t"$11}' | sort | uniq -c | awk '{print $2" "$1" "$3}' | sort -nr |grep mysql
 4
Author: Patel95, 2013-04-26 19:55:00

Como comentado na resposta da caf acima, ps e, em alguns casos, pidstat dar-lhe-á a média de vida do PCP. Para obter resultados mais precisos use top. Se precisar de correr o topo uma vez que possa correr:

top -b -n 1 -p <PID>

Ou apenas para processamento de dados e cabeçalho:

top -b -n 1 -p <PID> | tail -3 | head -2

Sem cabeçalhos:

top -b -n 1 -p <PID> | tail -2 | head -1
 4
Author: aviranh, 2017-05-23 12:34:41
ps aux|awk  '{print $2,$3,$4}'|grep PID

Onde a primeira coluna é o PID, a segunda coluna de Utilização do CPU, a terceira coluna de Utilização da memória.

 2
Author: Osama Al-Banna, 2014-07-21 13:19:30

Para obter o uso da memória apenas da sua aplicação (em oposição às bibliotecas partilhadas que ela usa, você precisa usar a interface Linux smaps). {[2] esta resposta explica bem.

 1
Author: Paul Biggar, 2017-05-23 12:18:16
ps axo pid,etime,%cpu,%mem,cmd | grep 'processname' | grep -v grep

ID do processo PID

Tempo De Execução Do Processo Etime / Duração Real

%de Utilização do cpu-CPU

%memory usage

Comando Cmd

Substituir o nome do processo por qualquer processo que queira seguir, mysql nginx php-fpm, etc ...

 1
Author: Siva KR, 2016-04-21 08:48:04
Todas as respostas aqui mostram apenas a percentagem de memória do PID.

Aqui está um exemplo de como obter o uso da Memória rss em KB para todos os processos apache, substituir "grep apache "por" grep PID " se você só quiser assistir a um PID específico:

watch -n5 "ps aux -y | grep apache | awk '{print \$2,\$6}'"

Estas impressões:

Every 5.0s: ps aux -y | grep apache | awk '{print $2,$6}'                                                                                                                                                                                                          
Thu Jan 25 15:44:13 2018

12588 9328
12589 8700
12590 9392
12591 9340
12592 8700
12811 15200
15453 9340
15693 3800
15694 2352
15695 1352
15697 948
22896 9360

Com CPU %:

watch -n5 "ps aux -y | grep apache | awk '{print \$2,\$3,\$6}'"

Resultado:

Every 5.0s: ps aux -y | grep apache | awk '{print $2,$3,$6}'                                                                                                                                                                                                       
Thu Jan 25 15:46:00 2018

12588 0.0 9328
12589 0.0 8700
12590 0.0 9392
12591 0.0 9340
12592 0.0 8700
12811 0.0 15200
15453 0.0 9340
15778 0.0 3800
15779 0.0 2352
15780 0.0 1348
15782 0.0 948
22896 0.0 9360
 1
Author: Banana, 2018-01-25 20:56:42

(Se estiver em MacOS 10.10, tente a opção acumulativa-c do topo:

top -c a -pid PID

(Esta opção não está disponível em outro linux, tentado com o Scientific Linux el6 e RHEL6)

 0
Author: Kieleth, 2015-02-28 17:27:53

Acima listar o cpu superior e o processo de consumo de memória

        ps axo %cpu,%mem,command | sort -nr | head
 0
Author: user8854776, 2017-11-14 02:51:40

A CPU e o uso da memória de um único processo no Linux ou você pode obter os 10 primeiros processos utilizados pela cpu usando abaixo do comando

Ps-aux --sort-PCP | head-n 11

 -1
Author: jyothish reddy, 2018-07-03 06:14:16