supervisord
CentOS 서버에서 실행 중입니다. 만약 내가한다면
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}'