명령의 출력에서 %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 == 9
9개 필드(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 ; }'