CPU 사용률을 확인하는 쉘 스크립트

CPU 사용률을 확인하는 쉘 스크립트

서버의 여유 메모리를 확인하는 쉘 스크립트를 작성하려고 합니다. 아래 코드를 시도 중입니다. top -M -n1 | grep "Mem" | awk '{print 0 + $7}' | awk '{ print $1 / 1024 }' | awk '{if ($1 < 1) print "\n Available Free memory is " $1 system("sar -r") }'

나는 다음과 같이 출력을 기대하고 있습니다 : -

사용 가능한 여유 메모리는 0.99GB입니다.
리눅스 2.6.18-274.el5 (XXXXXXXXX) 15/10/15

00:00:02 kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad
00:10:01 4630292 11674812 71.60 342120 8428736 4096440 124 0.00 0
00:20:01 4632356 11672748 71.59 342120 8429228 4096440 124 0.00 0
00:30:01 4595960 11709144 71.81 342128 8429712 4096440 124 0.00 0
00:40:01 4601820 11703284 71.78 342136 8430220 4096440 124 0.00 0
00:50:01 4603536 11701568 71.77 342140 8430828 4096440 124 0.00 0
01:00:01 4600656 11704448 71.78 342152 8431340 4096440 124 0.00 0
01:10:01 4606704 11698400 71.75 342156 8431868 4096440 124 0.00 0
01:20:01 4605780 11699324 71.75 342168 8432384 4096440 124 0.00 0
01:30:01 4606880 11698224 71.75 342172 8432868 4096440 124 0.00 0
01:40:01 4642516 11662588 71.53 342176 8400916 4096440 124 0.00 0
01:50:01 4642224 11662880 71.53 342180 8401400 4096440 124 0.00 0
02:00:01 4604204 11700900 71.76 342184 8402232 4096440 124 0.00 0
02:10:01 4607188 11697916 71.74 342188 8402792 4096440 124 0.00 0
02:20:01 4562004 11743100 72.02 342196 8410480 4096440 124 0.00 0

그러나 위 명령을 실행하면 sar -r명령 출력이 먼저 인쇄된 다음 "사용 가능한 여유 메모리는 0.99GB입니다"라는 줄이 인쇄됩니다.

누군가 나를 여기로 안내해 줄 수 있습니까?

답변1

awk 문에는 여러 작업이 있습니다. 작업을 세미콜론이나 새 줄로 구분하세요. 이 경우에는 ;print 문 "$1"의 끝 바로 뒤에 세미콜론을 추가했습니다 .

top -M -n1 | grep "Mem" | awk '{print 0 + $7}' | awk '{ print $1 / 1024 }' | awk '{if ($1 < 1) print "\n Available Free memory is " $1 ; system("sar -r") }'

여러 작업이 포함된 조건에 대한 awk 구문 -

if(조건식)
{
    액션1;
    액션2;
}

답변2

출력은 에서 버퍼링되지만 awk에서는 버퍼링되지 않습니다 system. 마지막 awk에서 삽입해보십시오.

fflush();

명령 전에 system():

awk '{if ($1 < 1) { print "\n Available Free memory is " $1 } fflush();  system("sar -r") }'

관련 정보