2013-11-20 8 views
0

다음은 내가하려는 일입니다. PID를 소비하는 상위 10 개 CPU를 파악하고 프로그램 이름을 찾고 싶습니다. 그런 다음 프로그램 이름과 % CPU를 파일에 표시하십시오.BASH, 루프의 파일에서 첫 번째 열을 읽습니다.

CPU_per=$(sar 1 1 | tail -1 | awk '{print 100 - $5}') 
echo $CPU_per 
if [ $CPU_per -gt 80 ] 

    (prstat -u user -n 900 0 1 | grep Type | head -n 10 | awk '{print $1 " " $9}') >> /tmp/PID 

for i in $(cat /tmp/PID) 
do   
    (awk '{print $1 } | ps -p $PID -o args | tail -1 | cut -d \ -f 2) 

이 같은

Process %CPU 
Program1 5% 
Program2 9% 
Program3 12% 
+2

스택 오버플로에 오신 것을 환영합니다. 곧 [About] 페이지를 읽으십시오. 이상한 의사 코드를 게시하는 것 같아 권장하지 않습니다. 적어도 구문 론적으로 올바른 셸 스크립트는 아닙니다. 또한 루프 본문에 견적이 누락되어 있으며 하위 셸에서 명령을 실행하면 명확하지 않습니다. '-p' 옵션으로'ps '에 콤마로 구분 된 PID 목록을 요청할 수 있습니다. –

+0

리눅스를 사용하고 있습니다. 리눅스에'prstat' 명령이 없다고 생각합니다. 여러분이 올릴 수 있다면 도움이 될 것입니다. 'prstat -u user -n 900 0 1'의 출력. –

답변

1

처럼 보이도록 출력을 하시겠습니까?

echo -e "COMMAND\t\t%CPU"; ps -eo "%c %C%%" --sort pcpu | tail -n10 
관련 문제