Linux 명령을 사용하여 사용된 메모리(사용된 RAM)를 얻는 방법은 무엇입니까?

Linux 명령을 사용하여 사용된 메모리(사용된 RAM)를 얻는 방법은 무엇입니까?

Linux 명령을 사용하여 사용된 메모리(RAM)의 비율을 검색하려고 합니다. 내 cpanel에는 사용된 메모리가 표시되는데 이를 특정 웹페이지에 표시해야 합니다.

포럼에서 다음 위치에서 올바른 메모리를 찾을 수 있음을 발견했습니다.

free -m

결과:

-/+ buffers/cache:        492       1555

-/+ 버퍼/캐시: 올바른 메모리 사용량을 포함합니다. 이 정보를 구문 분석하는 방법이나 사용된 메모리 비율을 얻는 다른 명령이 있는지 모르겠습니다.

답변1

무료 샘플 출력은 다음과 같습니다.

% free
             total       used       free     shared    buffers     cached
Mem:      24683904   20746840    3937064     254920    1072508   13894892
-/+ buffers/cache:    5779440   18904464
Swap:      4194236        136    4194100

숫자의 첫 번째 줄( Mem:)에는 다음이 나열됩니다.

  • total메모리
  • used메모리
  • free메모리
  • 용법shared
  • 용법buffers
  • 파일 시스템 캐시 사용( cached)

이 줄에used 버퍼 및 캐시 포함이는 무료에 영향을 미칩니다. 할당 요청을 충족해야 하는 경우 시스템이 캐시를 덤프하므로 이것은 "실제" 사용 가능한 메모리가 아닙니다.

다음 줄( -/+ buffers/cache:)은 마치 버퍼나 캐시가 없는 것처럼 사용된 실제 메모리와 사용 가능한 메모리를 제공합니다.

마지막 줄( Swap)은 스왑 메모리 사용량을 나타냅니다. 스와핑을 위한 버퍼나 캐시가 없습니다. 이러한 것들을 물리적 디스크에 넣을 필요가 없기 때문입니다.

사용된 메모리(버퍼 및 캐시 제외)를 출력하려면 다음과 같은 명령을 사용할 수 있습니다.

% free | awk 'FNR == 3 {print $3/($3+$4)*100}'
23.8521

그러면 세 번째 행을 가져와 사용된/총계 * 100으로 나눕니다.

여유 메모리의 경우:

% free | awk 'FNR == 3 {print $4/($3+$4)*100}' 
76.0657

답변2

free명령 정보를 구문 분석하는 방법을 언급하겠습니다 . 백분율을 찾으려면 다른 2가지 답변에서 제안한 대로 사용할 수 있습니다.

이것은 명확하게 설명되었습니다.여기. 내 시스템에 있는 내용을 기반으로 설명하려고 노력하겠습니다.

free -m
             total       used       free     shared    buffers     cached
Mem:          7869       4402       3466          0        208       3497
-/+ buffers/cache:        696       7173
Swap:         3999        216       3783

이제 각 숫자가 실제로 무엇을 나타내는지 살펴보겠습니다.

1호선

  • 7869내 컴퓨터에서 사용할 수 있는 메모리/물리적 RAM을 나타냅니다.
  • 4402내 시스템에서 사용되는 메모리/RAM을 나타냅니다.
  • 3466새 프로세스를 실행하는 데 사용 가능한 총 RAM 용량을 나타냅니다.
  • 0 공유 메모리를 나타냅니다. 이 열은 더 이상 사용되지 않으며 향후 무료 버전에서 제거될 수 있습니다.
  • 208 Linux의 다양한 애플리케이션에 의해 버퍼링되는 총 RAM 양을 나타냅니다.
  • 3497향후 사용을 위해 데이터를 캐시하는 데 사용되는 총 RAM을 나타냅니다.

2호선

-/+ buffers/cache:        696       7173

Line2에서 얻은 값 696과 7173을 어떻게 계산합니까?

총 사용 금액(4402)--총 버퍼 RAM(208)--캐시에 사용된 총 RAM(3497)는 다음과 같이 구성됩니다.실제 사용된 메모리시스템에서. 그것은 나에게 반환697화어느 것이지실제 사용된 메모리출력은 두 번째 줄에 있습니다.

지금,총 이용 가능(7869)--실제 사용(696)은 당신에게 주어져야합니다여유 메모리이것은7173이 경우 두 번째 줄로도 출력됩니다.

답변3

비록복사@szboardstretcher가 지적했듯이, 원래 질문에서 내가 선호하는 솔루션은 다음과 같습니다. 특히 웹 페이지로 구문 분석하기를 원하기 때문입니다.

$ free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}'

산출:

used: 82.68%, buffers: 42.81%, swap: 1.27%

답변4

3.3 이상 에는 free줄이 없으므로 -/+ buffers/cache:이전 답변이 작동하지 않습니다. 3.3에서는 free"Mem" 라인에서 사용된 것과 사용 가능한 것을 비교했습니다. 다음 내용은 이전 버전과 새 버전 모두에 적용됩니다 free.

free |  awk '$1 == "Mem:" {x= $7/($3+$7)*100} $2 == "buffers/cache:" {x= $4/($3+$4)*100} $1 == "Swap:" {print x}'  

관련 정보