본문 바로가기
LinuX

linux 프로세스 별 cpu 사용률

by 타마마임팩트_쫀 2016. 5. 10.

/proc/[PID]/stat 를 열어보면 프로세스 리소스 사용률에 대한 다양한 정보가 출련된다.

특정 PID 로 cpu 사용률을 확인하자.



vi cpu_proc.sh

#!/bin/bash

# calculate the cpu usage of a single process


[ -z $1 ] && echo "usage: $0 <pid>"


sfile=/proc/$1/stat

if [ ! -r $sfile ]; then echo "pid $1 not found in /proc" ; exit 1; fi


proctime=$(cat $sfile|awk '{print $14}')

totaltime=$(grep '^cpu ' /proc/stat |awk '{sum=$2+$3+$4+$5+$6+$7+$8+$9+$10; print sum}')


echo "time                        ratio      cpu%"


while [ 1 ]; do

    sleep 1

    prevproctime=$proctime

    prevtotaltime=$totaltime

    proctime=$(cat $sfile|awk '{print $14}')

    totaltime=$(grep '^cpu ' /proc/stat |awk '{sum=$2+$3+$4+$5+$6+$7+$8+$9+$10; print sum}')

    ratio=$(echo "scale=2;($proctime - $prevproctime) / ($totaltime - $prevtotaltime)"|bc -l)

    echo "$(date --rfc-3339=seconds);  $ratio;      $(echo "$ratio*100"|bc -l)"

done



결과

>./cpu_proc.sh 60766

time                        ratio      cpu%

2016-05-10 15:39:29+09:00;  .02;      2.00

2016-05-10 15:39:30+09:00;  .02;      2.00

2016-05-10 15:39:31+09:00;  .02;      2.00

2016-05-10 15:39:32+09:00;  .02;      2.00

2016-05-10 15:39:33+09:00;  .02;      2.00

2016-05-10 15:39:34+09:00;  .01;      1.00

2016-05-10 15:39:35+09:00;  0;      0

2016-05-10 15:39:36+09:00;  0;      0

2016-05-10 15:39:37+09:00;  .01;      1.00

2016-05-10 15:39:38+09:00;  .02;      2.00