하위 프로세스의 CPU 및 메모리 사용량을 확인하는 방법

하위 프로세스의 CPU 및 메모리 사용량을 확인하는 방법

supervisordCentOS 서버에서 실행 중입니다. 만약 내가한다면

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

나는 단지 초기화 데몬이기 0 0때문에 그것을 얻고 있습니다. supervisord내 서버에서 네 개의 하위 프로세스를 실행합니다.

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

한 줄의 명령으로 이러한 하위 프로세스의 CPU 및 메모리 사용량 요약을 어떻게 찾을 수 있습니까?

답변1

코드해피 라우어의 답변,

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

하위 레이어는 하나만 얻을 수 있습니다.

기본 PID에서 파생된 모든 프로세스를 검색하려면 다음 코드를 사용하세요.

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

기본 프로세스의 pid는 하위 프로세스의 PGID입니다.

답변2

주어진 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

pgrep에서 모든 하위 프로세스의 PID를 가져올 수 없습니다.

답변3

다음을 사용해 보세요 xargs:

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

관련 정보