Como encontrar o uso de cpu e memória de processos filhos

7

O Supervisord está rodando no servidor centos. Se eu fizer

ps -e -o %mem,%cpu,cmd | grep supervisord | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'

Eu recebo 0 0 apenas porque o supervisord é apenas um daemon de inicialização. Ele executa quatro processos filhos no meu servidor:

# pgrep -P $(pgrep supervisord) | wc -l
4

Como posso encontrar o uso resumido de CPU e mem desses processos filhos em um comando de linha?

Obrigado

    
por KennyPowers 01.08.2014 / 15:13

3 respostas

4

o código

pgrep -P $(pgrep supervisord) | xargs ps -o %mem,%cpu,cmd -p | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'

terá apenas uma camada filho

se você quiser procurar por todos os processos derivados de um pid principal, use este código.

ps -o pid,ppid,pgid,comm,%cpu,%mem  -u {user name} | {grep PID_PRINCIPAL}

O pid do processe principal é o PGID dos processos filhos.

Espero que isso ajude !!!

    
por 29.07.2015 / 01:36
3

Dado um pid ,

pid=24535
pstree -p $pid | grep -o '([0-9]\+)' | grep -o '[0-9]\+' |\
  xargs ps -o %mem,%cpu,cmd -p | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'
# 15.5 905.2

Não tive sorte em obter os pids de todos os processos filhos do pgrep.

    
por 03.02.2015 / 18:20
-1

Tente usar xargs :

pgrep -P $(pgrep supervisord) | xargs ps -o %mem,%cpu,cmd -p | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'
    
por 01.08.2014 / 17:36

Tags