이 CPU 사용률 스크립트 이해

이 CPU 사용률 스크립트 이해

다음 스크립트를 이해해야 합니다.

HEADER='CPU    pctUser    pctNice  pctSystem  pctIowait    pctIdle'

HEADERIZE="BEGIN {print \"$HEADER\"}"

PRINTF='{printf "%-3s  %9s  %9s  %9s  %9s  %9s\n", cpu, pctUser, pctNice, pctSystem, pctIowait, pctIdle}'

CMD='sar -P ALL 1 1'

FORMAT='{cpu=$3; pctUser=$4; pctNice=$5; pctSystem=$6; pctIowait=$7; pctIdle=$NF}'

FILTER='/Average|Linux|^$|%/ {next} (NR==1) {next}'


$CMD | tee $TEE_DEST | $AWK "$HEADERIZE $FILTER $FORMAT $PRINTF"  header="$HEADER"

echo "Cmd = [$CMD];  | $AWK '$HEADERIZE $FILTER $FORMAT $PRINTF' header=\"$HEADER\"" >> $TEE_DEST

이 스크립트는 실제로 CPU 사용률(sar 사용)을 확인하고 해당 값을 인쇄하는 데 사용됩니다. 이해하는 HEADER데 문제가 있습니다 HEADERIZE. PRINTF이것이 어떻게 작동하는지.

답변1

스크립트를 작성하는 사람은 출력의 모양과 스크립트의 기능을 결정하는 모든 것을 더 쉽게 볼 수 있기를 원합니다. 그들은 당신을 더 쉽게 만들지 않는 것 같습니다 :).

awk의 작동 방식을 이해했다면(Google에서 검색하거나 읽어보세요 man awk) 일련의 작업이 필요하다는 것을 알 수 있습니다.무늬 { 성명.... }(지나치게 단순화한 것입니다.) HEADER및 같은 이름 HEADERIZE은 스크립트 상단에 값이 할당되고 나중에 값이 사용되는 쉘 변수이며 앞에 "$"가 붙습니다. 저 $AWK "$HEADERIZE줄 보이세요? 스크립트는 awk를 실행합니다(아마 다른 곳에서는 awk 변수가 이와 유사한 것으로 정의되어 있을 것입니다 awk) /usr/bin/awk. awk에 대한 인수는 비어 있지 않은 두 번째 줄에 정의된 대로 HEADERIZE 변수의 값으로 시작됩니다. 따라서 해당 행은 실제로 다음과 같이 읽혀집니다( AWK변수가 다음과 같이 정의되었다고 가정 awk).

awk "BEGIN {print "$HEADER"}" 

등.

이 모든 것이 어떻게 작동하는지 이해하려면 다음과 같은 것을 사용 하도록 변수를 바꾸 echo거나 awk재정의하십시오 .AWKecho

export AWK=echo

그리고 스크립트를 다시 실행하세요. 에 전달되는 명령줄을 볼 수 있습니다 awk.

하단에 두 개의 명령이 있는 이유는 TEE_DEST이 스크립트를 실행하면 변수 값이라는 출력 파일에 두 개의 항목이 포함되기 때문인 것 같습니다. 하나는 변수 실행 명령줄의 출력이 CMD이름이 지정된 파일에 저장되고 출력이 표시될 명령 $TEE_DEST에 전달되는 첫 번째 명령으로 시작하는 것입니다.awk단말기. 그런 다음 두 번째에는 echo문자열을 스크립트에 넣고 Cmd = [$CMD]해당 awk스크립트의 출력도 파일에 추가합니다.$TEE_DEST

VARIABLE다음을 사용하여 명명된 각 변수의 값을 쉽게 찾을 수 있습니다.

echo $VARIABLE

이를 통해 스크립트의 일부를 실행하고 내용을 터미널 창에 붙여넣어 검사할 수 있습니다. 저는 이것이 스크립팅을 배우는 좋은 방법이라는 것을 알았습니다.

네가 원한다면놓다AWK변수의 값을 다음으로 덮어쓰라고 하면 위에서 제안한 대로 수행할 수 있습니다 echo.

export VARIABLE=new value for the variable

관련 정보