![메모리 사용량을 얻기 위한 패드](https://linux55.com/image/74217/%EB%A9%94%EB%AA%A8%EB%A6%AC%20%EC%82%AC%EC%9A%A9%EB%9F%89%EC%9D%84%20%EC%96%BB%EA%B8%B0%20%EC%9C%84%ED%95%9C%20%ED%8C%A8%EB%93%9C.png)
스왑 및 캐시를 포함하여 시스템에서 사용 가능한 총 메모리 양을 알려주는 한 줄을 만들고 싶습니다.
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
마치 한 라인에 있는 것처럼 참조할 수 있도록 하려면 이것을 설정하십시오 .
처음부터 계산하면 $1
to $6
는 열 헤더이고 $7
to는 Mem:
행 헤더이고 $8
to $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