[linux] 쉘 스크립트로 구문 분석하기에 적합한 Linux 박스의 총 물리적 메모리 (RAM)를 어떻게 찾을 수 있습니까?

일부 RHEL Linux 상자에서 총 실제 메모리를 찾기 위해 쉘 스크립트를 입력하고 있습니다.

우선 사용 가능한 메모리 뿐만 아니라 커널이 인식 하는 총 물리적 메모리에 관심이 있음을 강조하고 싶습니다 . 따라서 / proc / meminfo 를 읽 거나 free , top 또는 sar 명령 을 사용 하라는 답변은 피하십시오 .이 모든 경우에 ” total memory “값은 ” available memory ” 값을 의미 합니다.

첫 번째 생각은 부트 커널 메시지를 읽는 것이 었습니다.

Memory: 61861540k/63438844k available (2577k kernel code, 1042516k reserved, 1305k data, 212k init)

그러나 일부 Linux 제품에서는 EMC2의 PowerPath 소프트웨어를 사용 하고 커널 시작시 플러딩 부팅 메시지를 사용하기 때문에 유용한 부팅 커널 메시지를 사용할 수 없으며 / var / log / dmesg 파일 에서도 사용할 수 없습니다 .

두 번째 옵션은 dmidecode 명령 이었습니다 (일부 오래된 커널 및 아키텍처의 제한으로 인해 커널 인식 RAM과 실제 RAM의 불일치 가능성에 대해 경고합니다). –memory 옵션 은 스크립트를 단순화하지만 해당 명령의 이전 릴리스에는 –memory 옵션 이 없다는 것을 깨달았습니다 .

마지막 기회는 getconf 명령이었습니다. 메모리 페이지 크기를보고하지만 실제 페이지의 총 수는보고하지 않습니다. _PHYS_PAGES 시스템 변수는 총 실제 페이지가 아니라 사용 가능한 실제 페이지 인 것 같습니다.

# getconf -a | grep 페이지
페이지 크기 4096
_AVPHYS_PAGES 1049978
_PHYS_PAGES 15466409

내 질문 : 셸 스크립트로 구문 분석하기에 적합한 실제 메모리의 총량을 얻는 다른 방법이 있습니까?



답변

실제 RAM에 관심이 있다면 명령을 사용하십시오 dmidecode. 그것은 당신에게주는 많은 단지보다 더 많은 정보를하지만, 사용 사례에 따라, 당신은 또한 시스템의 8 세대가 2x4GB 스틱 또는 4x2GB 스틱에서 온 알고 할 수 있습니다.


답변

시도해 보셨습니까 cat /proc/meminfo? 그런 다음 원하는 것을 awk 또는 grep 할 수 있습니다. 예를 들어 MemTotal

awk '/MemTotal/ {print $2}' /proc/meminfo

또는

cat /proc/meminfo | grep MemTotal


답변

cat /proc/meminfo | grep MemTotal또는 free는 서버에있는 정확한 RAM 양을 제공합니다. 이것은 “사용 가능한 메모리”가 아닙니다.

VM이 있고 하이퍼 바이저가 호스팅하는 전체 메모리 양을 계산하고 싶지만이 경우 하이퍼 바이저에 로그인해야 할 때 문제가 발생한다고 생각합니다.

cat /proc/meminfo | grep MemTotal

다음과 같다

 getconf -a | grep PAGES | awk 'BEGIN {total = 1} {if (NR == 1 || NR == 3) total *=$NF} END {print total / 1024" kB"}'


답변

의 마지막 2 개 항목을 추가하면 /proc/meminfo호스트에있는 정확한 메모리를 제공합니다.

예:

DirectMap4k:       10240 kB
DirectMap2M:     4184064 kB

10240 + 4184064 = 4194304kB = 4096MB.


답변

또 하나의 유용한 명령 :
vmstat -s | grep memory
내 컴퓨터의 샘플 출력은 다음과 같습니다.

  2050060 K total memory
  1092992 K used memory
   743072 K active memory
   177084 K inactive memory
   957068 K free memory
   385388 K buffer memory

메모리 정보를 얻는 또 다른 유용한 명령은 다음과 같습니다.
free
샘플 출력은 다음과 같습니다.

             total       used       free     shared    buffers     cached
Mem:       2050060    1093324     956736        108     385392     386812
-/+ buffers/cache:     321120    1728940
Swap:      2095100       2732    2092368

여기서 한 가지 관찰은 명령 free이 스왑 공간에 대한 정보도 제공 한다는 것 입니다.
다음 링크가 유용 할 수 있습니다.
http://www.linuxnix.com/find-ram-details-in-linuxunix/


답변

free -h | awk '/Mem\:/ { print $2 }'

이렇게하면 사람이 읽을 수있는 형식으로 시스템의 총 메모리가 제공되고 적절한 단위 (예 : 바이트, KB, MB 또는 GB)로 자동 확장됩니다.


답변

dmidecode -t 17 | grep  Size:

“크기 :”뒤에 표시된 모든 값을 추가하면 서버에있는 모든 RAM 스틱의 정확한 총 물리적 크기가 제공됩니다.