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


30

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

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

free -m

결과:

-/+ buffers/cache:        492       1555

-/ + buffers / cache : 올바른 메모리 사용량을 포함합니다. 이 정보를 구문 분석하는 방법을 모르거나 백분율로 사용되는 메모리를 가져 오는 다른 명령이 있는지 모르겠습니다.


3
그것은 이미 여기에 대답되었습니다! stackoverflow.com/questions/10585978/… 예 : free | grep Mem | awk '{print $4/$2 * 100.0}'
szboardstretcher

@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}'
Simply_Me

필요한 번호를 모른 채 어떤 번호를 사용해야하는지 말하기 어렵습니다. 그러나 많은 경우 이러한 숫자 중 일부는 매우 순진하며 추세 및 컨텍스트 정보가 필요합니다.
eckes

답변:


33

다음은 free의 샘플 출력입니다.

% 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

이것은 세 번째 줄을 잡고 used / total * 100을 나눕니다.

그리고 무료 메모리 :

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

1
"-/ + 버퍼 / 캐시 : 5779440 18904464"가 서버의 올바른 RAM 사용량 / 상태입니까?
codelogn

2
엄밀히 말하면 안되지만 실제로 말하면 그렇습니다. 실제 메모리 사용량은 두 번째 라인 (사용됨 : 20746840)이지만 해당 메모리 사용량의 일부는 시스템의 응답 시간을 단축시키는 버퍼 및 캐시입니다. 세 번째 줄 (사용 된 : 5779440)은 프로그램이 실제로 사용하는 메모리의 양을 제공하며 프로그램이 얼마나 더 많은 양을 할당 할 수 있는지를 결정하는 메모리 그림입니다. 당신의 목표가 실제로 사용중인 프로그램과 실제로 할당 할 수있는 것의 의미에서 여유 / 사용 된 메모리를 얻는 것이라면, 네 번째 줄은 당신에게 맞습니다.
casey

1
주의 최신 버전과 함께 있음을 free, -/+ buffers/cache완전히 의도적으로 생략되고에 표시된 값 used열은 기본적으로 버퍼 캐시를 제외합니다. 여기를 참조하십시오 : bugzilla.redhat.com/show_bug.cgi?id=1158828
jdgregson

10

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

여기에 명확하게 설명되어 있습니다 . 시스템에있는 내용을 설명하려고합니다.

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 )은 시스템에서 실제 사용한 RAM 을 구성해야 합니다. 두 번째 줄에서 실제로 사용되는 RAM 출력 인 697 을 반환합니다 .

이제 Total Available ( 7869 ) -Actual Used ( 696 )는 이 경우 7173 인 여유 메모리 를 제공 하며 두 번째 줄의 출력으로도 사용됩니다.


6

@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
참고로 이것을 사용하여 다음을 얻습니다used: 96.00%, buffers: 26.53%awk: (FILENAME=- FNR=4) fatal: division by zero attempted
kellyfj

사용 된 전체 명령은 무엇입니까? 나는 센 토스에서 그것을 확인했다.
Simply_Me

서식은 죄송하지만 여기 있습니다$ cat /etc/issue CentOS release 6.7 (Final) $ 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: 12.91%, buffers: 96.24%awk: (FILENAME=- FNR=4) fatal: division by zero attempted $ free total used free shared buffers cached Mem: 15429704 1991416 13438288 164 151556 1259584 -/+ buffers/cache: 580276 14849428 Swap: 0 0 0
kellyfj

awk (mawk)의 일부 버전의 경우 백분율 기호를 인쇄하여 인쇄해야합니다. 그렇지 않으면 awk에서 다음과 같은 오류가 발생합니다. printf ( "used : % .0f %%"), $ 3 / $ 2 * 100 다음과 같이 작동합니다. mawk와 gawk.
Ján Lalinský

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

스왑 번호 뒤에 새 줄을 추가합니다


1

CentOS 7까지

cat /proc/meminfo 

프로세스 별 실제 메모리 사용량을 확인합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.