답변:
@khedron이 말한 것처럼 Activity Monitor 에서이 정보를 볼 수 있습니다.
커맨드 라인에서 그것을 원한다면, 유선, 활성, 비활성 및 무료 메모리 양을 보여주기 위해 내가 작성한 (또는 다른 사람으로부터 수정되었거나, 지금은 기억이 안됩니다.) 오래된 Python 스크립트가 있습니다.
#!/usr/bin/python
import subprocess
import re
# Get process info
ps = subprocess.Popen(['ps', '-caxm', '-orss,comm'], stdout=subprocess.PIPE).communicate()[0].decode()
vm = subprocess.Popen(['vm_stat'], stdout=subprocess.PIPE).communicate()[0].decode()
# Iterate processes
processLines = ps.split('\n')
sep = re.compile('[\s]+')
rssTotal = 0 # kB
for row in range(1,len(processLines)):
rowText = processLines[row].strip()
rowElements = sep.split(rowText)
try:
rss = float(rowElements[0]) * 1024
except:
rss = 0 # ignore...
rssTotal += rss
# Process vm_stat
vmLines = vm.split('\n')
sep = re.compile(':[\s]+')
vmStats = {}
for row in range(1,len(vmLines)-2):
rowText = vmLines[row].strip()
rowElements = sep.split(rowText)
vmStats[(rowElements[0])] = int(rowElements[1].strip('\.')) * 4096
print 'Wired Memory:\t\t%d MB' % ( vmStats["Pages wired down"]/1024/1024 )
print('Active Memory:\t\t%d MB' % ( vmStats["Pages active"]/1024/1024 ))
print('Inactive Memory:\t%d MB' % ( vmStats["Pages inactive"]/1024/1024 ))
print('Free Memory:\t\t%d MB' % ( vmStats["Pages free"]/1024/1024 ))
print('Real Mem Total (ps):\t%.3f MB' % ( rssTotal/1024/1024 ))
보시다시피 vm_stat
, 명령 줄에서 호출 하면 4kB 페이지로 계산되므로 스크립트가 MB로 변환됩니다.
스크립트는 또한 비교를 위해 실행중인 모든 프로세스의 "실제 메모리"사용량을 계산합니다 (메모리는 복잡한 짐승이기 때문에 전체 메모리 통계의 특정 값과 일치하지 않음).
내 시스템에서 스크립트 출력의 예는 다음과 같습니다.
[user@host:~] % memReport.py
Wired Memory: 1381 MB
Active Memory: 3053 MB
Inactive Memory: 727 MB
Free Memory: 1619 MB
Real Mem Total (ps): 3402.828 MB
(StackExchange의 탭 크기와 일치하도록 약간 약간 조정되었습니다.)
ps -caxm -orss= | awk '{ sum += $1 } END { print "Resident Set Size: " sum/1024 " MiB" }'
필요한 명령 vm_stat
은 전통적인 유닉스 도구와 비슷 vmstat
하지만 MACH에 따라 약간의 차이가 있습니다. 매뉴얼 페이지가 잘 작성되었습니다.
느린 이유는 top -l 1
완료 후 표준 새로 고침 사이의 표준 지연이 완료된 후 항상 1 초 지연 되기 때문 입니다. 명령에 -s 0을 추가하면 즉시 완료됩니다.
top -l 1 -s 0 | grep PhysMem
또한 명확성을 위해 각 mem 구성 요소를 줄에 표시하는 것을 좋아하므로 sed 교체 문자열에서 'PhysMem :'과 정렬 할 공백을 9 개 추가했습니다.
top -l 1 -s 0 | grep PhysMem | sed 's/, /\n /g'
vm_stat
.
top
는 호출하는 것보다 상당히 느리지 vm_stat
만 top
추출은 덜 장황하며 단위는 페이지가 아닌 메가 바이트입니다. 좀 더 장황하게하기 위해 줄 바꿈을 제거하고 결과 awk
로 대체 할 수 있습니다 . grep
top -l 1 | grep ^PhysMem
page
단위로 결과를 제공하지 않으며 해당 단위를 해석 할 수 있도록 해킹 후 처리가 필요합니다.
다음은 전체 vm_stat
출력을보다 인간 친화적 으로 만드는 간단한 단일 라이너입니다 .
$ vm_stat | perl -ne '/page size of (\d+)/ and $size=$1; /Pages\s+([^:]+)[^\d]+(\d+)/ and printf("%-16s % 16.2f Mi\n", "$1:", $2 * $size / 1048576);'
free: 2330.23 Mi
active: 2948.07 Mi
inactive: 1462.97 Mi
speculative: 599.45 Mi
wired down: 840.46 Mi
copy-on-write: 43684.84 Mi
zero filled: 385865.48 Mi
reactivated: 608.14 Mi
free
Mac OS X 와 비슷한 터미널 명령이 있습니다.top
자세한 정보는이 Apple 지원 문서를 확인하십시오.
htop
그냥 복용 @zack에서 솔루션을 비활성화하고 투기 블록을 추가.
#!/bin/bash
FREE_BLOCKS=$(vm_stat | grep free | awk '{ print $3 }' | sed 's/\.//')
INACTIVE_BLOCKS=$(vm_stat | grep inactive | awk '{ print $3 }' | sed 's/\.//')
SPECULATIVE_BLOCKS=$(vm_stat | grep speculative | awk '{ print $3 }' | sed 's/\.//')
FREE=$((($FREE_BLOCKS+SPECULATIVE_BLOCKS)*4096/1048576))
INACTIVE=$(($INACTIVE_BLOCKS*4096/1048576))
TOTAL=$((($FREE+$INACTIVE)))
echo Free: $FREE MB
echo Inactive: $INACTIVE MB
echo Total free: $TOTAL MB
#!/bin/bash
top -l 1 | grep PhysMem: | awk '{print $10}'
유닉스 전문가에게만 해당 :
top -l 1 | awk '/PhysMem:/ {print $10}'
top -l1 | awk '/PhysMem/ {print $2}'
macOS에서 사용 > = High Sierra
free="$(( $(vm_stat | awk '/free/ {gsub(/\./, "", $3); print $3}') * 4096 / 1048576)) MiB free"
tcsh
(내 기본값) 또는 에서 작동하지 않습니다 sh
. 명령이 쉘 특정입니까?
bash
및 ksh
특정. 에서 tcsh
시도 : set freeblocks=`vm_stat | grep free | awk '{ print $3 }' | sed 's/\.//'` ; set freeMB=`expr $freeblocks \* 4096 / 1048576`; set free=`echo $freeMB MiB free`
. 그런 다음 사용 echo $free
가능한 메모리 양을 인쇄 할 수 있습니다 . 별칭을 만들 수도 있습니다 alias free echo $freeMB MiB free
..
Mac OS X과 함께 제공되는 것과 동등한 것은 아니지만 정보를 얻을 수있는 몇 가지 다른 방법이 있습니다.
system_profiler
-쉘의 모든 Mac 시스템 프로파일 정보를 표시합니다 sysctl -a | grep mem
또는 sysctl hw.memsize
(총 멤)allmemory
매우 상세한 메모리 사용량을보고하는 명령 행 도구를 원하면 명령을 시도하십시오 .
allmemory
시간이 예기치 않게 길어질 수 있습니다. YMMV. allmemory
for of run은 sysdiagnose
상당히 오래 걸릴 수 있습니다.
위의 내용은 취향에 따라 너무 많은 노력을 기울였으며 설치가 완전히 완료된 것으로 가정합니다. Mac OS X 시동 디스크로 부팅 한 경우 위의 모든 솔루션이 작동하지 않습니다. .. "hostinfo"명령을 사용하십시오. 다음은 Mavericks (10.9.1)를 실행하는 2012 년 중반 MBAir의 출력입니다.
Mach kernel version:
Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT 2013; root:xnu-2422.1.72~6/RELEASE_X86_64
Kernel configured for up to 4 processors.
2 processors are physically available.
4 processors are logically available.
Processor type: i486 (Intel 80486)
Processors active: 0 1 2 3
Primary memory available: 8.00 gigabytes
Default processor set: 195 tasks, 961 threads, 4 processors
Load average: 1.61, Mach factor: 2.38
이 명령의 장점은 10.9 설치 프로그램에도 사전 설치되어 제공 /usr/bin
되므로 매우 편리하다는 것입니다.
이상적으로 RAM 만 원한다면 다음을 발행하십시오.
$ hostinfo | grep memory
그래도 이전 OS에 hostinfo가 있는지 알 수 없습니다 ...
hostinfo
표시 됩니까?
나는 요즘 생각 psutil
하고 meminfo.py
스크립트는 가장 유용한 메모리 사용 세부 정보를 제공합니다. 그것을 시도하려면 :
pip install psutil
curl -O https://raw.githubusercontent.com/giampaolo/psutil/master/scripts/meminfo.py
python ./meminfo.py
생성되는 출력은 다음과 같습니다.
MEMORY
------
Total : 16.0G
Available : 5.5G
Percent : 65.8
Used : 13.5G
Free : 1.5G
Active : 7.4G
Inactive : 4.0G
Wired : 2.1G
SWAP
----
Total : 1.0G
Used : 33.5M
Free : 990.5M
Percent : 3.3
Sin : 15.9G
Sout : 71.6M
스왑없이 새 응용 프로그램을 시작하는 데 실제로 사용할 수있는 메모리Available
의 추정치가 표시된 행을 확인하십시오 .
사용 가능한 메모리 추정치를 제공하는 다른 MacOS 유틸리티를 모르겠습니다.
비교를 위해 : Linux 시스템의 경우 available
현재 버전의 출력에서 동일한 종류의 정보가 열에 제공됩니다 free
.
total used free shared buff/cache available
Mem: 7.8G 552M 182M 156M 7.1G 6.9G
Swap: 0B 0B 0B
Total: 7.8G 552M 182M
출력의 해당 available
열 free
은에서 시작 MemAvailable
됩니다 /proc/meminfo
. 그리고이 시스템에서 /proc/meminfo
, psutil은 또한 그냥 사용 가능한 메모리를 추정하기 위해 사용합니다.
그러나 MacOS에는을 /proc/meminfo
사용할 수 없으므로이 경우 사용 가능한 메모리를 추정하기 위해 psutil 은 Linux에서 사용한 것과 동일한 알고리즘을 사용하여를 계산 MemAvailable
합니다/proc/meminfo
.
memory_pressure
명령을 시도 할 수 있습니다 . 시스템 출력 확인 (i5, 4GB RAM)
The system has 2147483648 (524288 pages with a page size of 4096).
Stats:
Pages free: 90009
Pages purgeable: 139593
Pages purged: 7496548
Swap I/O:
Swapins: 470466
Swapouts: 530913
Page Q counts:
Pages active: 407739
Pages inactive: 148277
Pages speculative: 16200
Pages throttled: 0
Pages wired down: 263064
Compressor Stats:
Pages used by compressor: 122815
Pages decompressed: 7327420
Pages compressed: 17625795
File I/O:
Pageins: 1538997
Pageouts: 86692
System-wide memory free percentage: 63%
이것은이 게시물의 두 번째 재발행입니다. 처음에 나는 두 개를 얻었다 -1
. 하나는 영어로 설명하지 않았기 때문에 수정되었습니다. 다른 gawk
하나는 (표준 OS X 설치의 일부가 아닌) 사용했기 때문에 수정되었으므로 이제는 사용 awk
합니다. 는 -2
;-) 아직 거기. 가장 좋은 것은 아마도 명령 자체를 테스트하고 평가하는 것입니다.
친숙하고 고도로 구성 가능한 디스플레이로 하나의 최종 사용자 지향 명령 만 작성하려는 첫 번째 아이디어를 검토했습니다.
free-like.sh
스크립트는 항상 "최종 사용자"를 지향하며,보다 정확하고 "친숙하고"구성 가능한 디스플레이를 제공하지만 더 많은 계산과 리소스 소비를 제공합니다.
free-like-raw.sh
, 명령은 이제 개발자와 sysadmin 등을 중심으로 계산 및 리소스 소비는 줄었지만 정확도는 낮고 "친숙한"표시를 갖습니다.
실제 메모리의 데이터는 명령 결과에서 추출됩니다 vm_stat
(결과는 블록 크기로 반환 됨). 바이트 단위 변환으로 인한 부정확도 (계산의 기본값 인 number_of_blocks * block_size)는 0 <블록 크기입니다. 가상 메모리의 데이터는 top
명령 에서 가져옵니다 . 여기서 부정확 한 내용은 top
명령 참조 단위 ( kilo, mega, giga)와 연결됩니다.
awk
반올림을 기준 으로 계산이 수행 됩니다 (반대 bc
). awk
보다 빠릅니다 bc
. 여기에서 테스트 스크립트를 볼 수 있습니다 : http://myblog.robert.sebille.name/article29.html#awk-bc
free-like.sh의 경우 x 소수점 이하 자릿수와 함께 mega ou giga의 표시를 요청하는 경우 명령 결과를 킬로, 메가 또는 기가 바이트 단위로 바이트 (기본값) 단위로 볼 수 있습니다.
스크립트가 너무 길어서 게시 할 수 없지만 내 블로그의이 기사에서 찾을 수 있습니다 : http://myblog.robert.sebille.name/article29.html
이 기사는 프랑스어로되어 있지만 각 명령에 대한 표시 예와 통합 도움말 ( ./free-like.sh -h
및 ./free-like-raw.sh -h
)을 영어로 표시합니다. 이 보조 도구는 명령을 완전히 설명합니다. 기사는 코드도 표시합니다.
영어는 모국어가 아닙니다. 누군가가 통합 도움말의 오류를 수정하려면 환영합니다.).
당신 것.
gawk
는 표준 OS X 설치의 일부가 아닌 스크립트를 요구 하는 것 같습니다 .
이것은 내 $ PS1에서 실행됩니다.
https://github.com/vigo/dotfiles-universal/blob/master/prompts/free_memory
(루비 버전 : https://github.com/vigo/dotfiles-universal/blob/master/prompts%2Ffree_memory.rb )
vm_stat
킬로바이트 단위로 보여줍니다.
아래의 oneliner는 MB 단위로 표시됩니다.
paste <(vm_stat | awk 'NR>1' | grep -o ".*:") <(for i in $(vm_stat | awk 'NR>1' | tr -d '.' | awk '{print $NF}'); do perl -e "print $i/1024" | awk '{printf "%0.2f", $0}'; echo; done) | column -s: -t
보고:
Pages free 11.06
Pages active 798.25
Pages inactive 776.03
Pages speculative 9.15
Pages throttled 0.00
Pages wired down 303.27
Pages purgeable 0.95
"Translation faults" 82172.66
Pages copy-on-write 11629.60
Pages zero filled 27685.41
Pages reactivated 1450.70
Pages purged 91.66
File-backed pages 430.20
Anonymous pages 1153.24
Pages stored in compressor 481.75
Pages occupied by compressor 149.91
Decompressions 1277.92
Compressions 1622.33
Pageins 13198.02
Pageouts 66.61
Swapins 54.34
Swapouts 90.63
만약 당신이 피셔 패키지 매니저와 함께 osx에 fishshell을 사용한다면.
나는 다음 확장을 썼다 : https://github.com/fisherman/free
osx에 대한 무료 명령을 완전히 다시 실행합니다. 직접 참조
> free
total used free appmem wired compressed
Mem: 8.00Gb 6.65Gb 1.95Gb 2.87Gb 2.09Gb 1.86Gb
+/- Cache: 1.24Gb 1.87Gb
Swap(43%): 2048Mb 877Mb 1171Mb
Load Avg: 1.63 1.95 1.95