일부 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 스틱의 정확한 총 물리적 크기가 제공됩니다.