메모리 사용량을 얻기 위한 패드

메모리 사용량을 얻기 위한 패드

스왑 및 캐시를 포함하여 시스템에서 사용 가능한 총 메모리 양을 알려주는 한 줄을 만들고 싶습니다.

free -t옵션이 아니기 때문에 free 열 아래의 값을 합산해야 합니다.

이 값을 얻는 방법을 잘 모르겠습니다. 을 사용하는 경우 awk다른 줄에서 다른 숫자를 어떻게 참조합니까( 예를 들어 다른 줄의 여유 스왑 공간은 Mem) ?$3$4

답변1

지금 내 앞에 있는 데비안에는 다음 줄이 free -t표시됩니다 Total:.

             total       used       free     shared    buffers     cached
Mem:       8197980    2583348    5614632          0     222508    1904352
-/+ buffers/cache:     456488    7741492
Swap:      7807584          0    7807584
Total:    16005564    2550180   13455384

행만 필요한 경우 tail및를 사용하여 awk값을 가져올 수 있습니다.

그러나 free이 줄이 표시되지 않으면 다음과 함께 awk를 사용할 수 있습니다 RS="".

free | awk -v RS="" '{print $10 "+" $17 "+" $21}' | bc

열 레이아웃이 free내 것과 다른 경우 필드 번호를 조정해야 할 수도 있습니다.

설명: 이 RS필드는 레코드 구분 기호입니다. ""자유 출력의 모든 라인을 연결 하여 awk마치 한 라인에 있는 것처럼 참조할 수 있도록 하려면 이것을 설정하십시오 .

처음부터 계산하면 $1to $6는 열 헤더이고 $7to는 Mem:행 헤더이고 $8to $10는 해당 행의 값이므로 $10사용 가능한 메모리 값입니다. 이는 다음 값에 대해 유사한 방식으로 수행됩니다.

             total       used       free     shared    buffers     cached
Mem:            $8         $9        $10        $11        $12        $13
-/+ buffers/cache:        $16        $17
Swap:          $19        $20        $21

awk 명령은 {print $10 "+" $17 "+" $21}기본적으로 값 +사이에 기호를 연결한 다음 출력을 파이프하여 bc합계를 계산합니다.

답변2

어쩌면 이게 대안이 될 수도 있겠네요free

cat /proc/meminfo | grep -e MemFree -e Buffers -e SwapFree | gawk 'BEGIN{s=0}{s+=$2}END{print s}'

답변3

free실행 한 다음 출력을 구문 분석 할 수 있습니까 ?

free | awk '{print $4}' | tail -3 | sed '2d' |paste -sd+ | bc

관련 정보