sar 명령에서 CPU 사용률을 추출하려면 awk를 작성하세요.

sar 명령에서 CPU 사용률을 추출하려면 awk를 작성하세요.

명령의 출력에서 ​​%user, %nice 등의 값을 추출하려고 합니다 sar.

sar -P ALL 1 1

산출:

Linux 2.6.32-358.el6.x86_64 (ftizsldapp009.ftiz.cummins.com)    09/28/2015      _x86_64_        (4 CPU)

02:49:40 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
02:49:41 PM     all      3.01      0.00      2.51      0.00      0.00     94.49
02:49:41 PM       0      1.98      0.00      3.96      0.00      0.00     94.06
02:49:41 PM       1      6.00      0.00      4.00      0.00      0.00     90.00
02:49:41 PM       2      2.00      0.00      1.00      0.00      0.00     97.00
02:49:41 PM       3      1.98      0.00      2.97      0.00      0.00     95.05

Average:        CPU     %user     %nice   %system   %iowait    %steal     %idle
Average:        all      3.01      0.00      2.51      0.00      0.00     94.49
Average:          0      1.98      0.00      3.96      0.00      0.00     94.06
Average:          1      6.00      0.00      4.00      0.00      0.00     90.00
Average:          2      2.00      0.00      1.00      0.00      0.00     97.00
Average:          3      1.98      0.00      2.97      0.00      0.00     95.05

값을 얻기 위해 다음 문자열을 작성했지만 작동하지 않는 것 같습니다.

내 명령:

sar -P ALL 1 1 | \
awk '{cpu=$3; pctUser=$4; pctNice=$5; pctSystem=$6; pctIowait=$7; pctIdle=$NF}' \
     '{printf "%-3s %9s %9s %9s %9s %9s\n", cpu, pctUser, pctNice, pctSystem, \
       pctIowait, pctIdle}'

답변1

노력하다

 sar -P ALL 1 1 | 
 awk  'NF == 9 && $3 != "all" {cpu=$3; pctUser=$4; pctNice=$5; pctSystem=$6; pctIowait=$7; pctIdle=$NF ;
     printf "%-3s %9s %9s %9s %9s %9s\n", cpu, pctUser, pctNice, pctSystem, pctIowait, pctIdle}'
  • NF == 99개 필드(NF)를 필터링해야 합니다.
  • $3 != "all"CPU를 요약하는 줄을 건너뛰세요.
  • 문자는 없지만 줄 끝 이후|

더 컴팩트한 버전

 sar -P ALL 1 1 | 
 awk  'NF == 9 && $3 != "all" { printf "%-3s %9s %9s %9s %9s %9s\n",$3,$4,$5,$6,$7,$NF}'

더 컴팩트한 버전

 sar -P ALL 1 1 | 
 awk  'NF == 9 && $3 != "all" { $1=$2=$8="" ; print ; }'

관련 정보