Seperti yang dikatakan @khedron , Anda dapat melihat info ini di Activity Monitor.
Jika Anda menginginkannya di baris perintah, berikut ini adalah skrip Python yang saya tulis (atau mungkin dimodifikasi dari milik orang lain, saya tidak ingat, sekarang sudah cukup tua) untuk menunjukkan kepada Anda jumlah memori Berkabel, Aktif, Tidak Aktif, dan Gratis:
#!/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 ))
Seperti yang Anda lihat, Anda bisa menelepon vm_stat
dari baris perintah, meskipun itu dihitung dalam halaman 4kB, karenanya skrip untuk mengkonversi ke MB.
Script juga menghitung penggunaan "memori nyata" dari semua proses yang berjalan untuk perbandingan (ini tidak akan cocok dengan nilai spesifik dari statistik memori keseluruhan, karena memori adalah binatang yang kompleks).
Berikut adalah contoh dari output skrip di sistem saya:
[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
(sangat sedikit disesuaikan agar sesuai dengan ukuran tab di StackExchange;)
ps -caxm -orss= | awk '{ sum += $1 } END { print "Resident Set Size: " sum/1024 " MiB" }'
Perintah yang Anda butuhkan adalah
vm_stat
- mirip dengan alat Unix tradisionalvmstat
tetapi dengan beberapa perbedaan spesifik MACH. Halaman manual ditulis dengan baik.sumber
Sepertinya alasannya lambat adalah karena
top -l 1
selalu tertunda satu detik setelah selesai, penundaan standar antara refresh. Menambahkan -s 0 ke perintah membuatnya selesai secara instan:Juga, untuk kejelasan, saya suka menunjukkan masing-masing komponen-mem pada barisnya, jadi saya menambahkan 9 spasi untuk penyelarasan dengan 'PhysMem:' di string pengganti:
sumber
vm_stat
.top
secara signifikan lebih lambat dari panggilan ituvm_stat
tetapitop
ekstraknya jauh lebih sedikit bertele-tele dan unitnya adalah megabyte dan bukan halaman. Untuk menjadi lebih sedikit verbose, jeda baris dapat dihapus danawk
dapat diganti dengangrep
menghasilkantop -l 1 | grep ^PhysMem
.page
unit tidak membantu / memerlukan semacam postprocessing hacky untuk membuat unit tersebut dapat ditafsirkan.Berikut ini adalah one-liner sederhana untuk membuat keseluruhan
vm_stat
output lebih ramah manusia:sumber
Jika Anda hanya benar-benar tertarik pada penggunaan swap (apa yang akan menjadi garis keluaran terakhir
free
):sumber
Ada perintah terminal yang mirip dengan
free
di Mac OS X ... namanyatop
Untuk informasi lebih lanjut, Anda dapat melihat dokumen Dukungan Apple ini.
Mac OS X: Cara Melihat Penggunaan Memori Dengan Utilitas "atas"
sumber
htop
Hanya mengambil solusi dari @zack dan menambahkan blok tidak aktif dan spekulatif.
sumber
Hanya untuk pakar Unix:
sumber
top -l1 | awk '/PhysMem/ {print $2}'
pada macos> = High Sierrasumber
tcsh
(default saya) ataush
. Apakah shell perintah khusus?bash
danksh
spesifik. Dalamtcsh
try:set freeblocks=`vm_stat | grep free | awk '{ print $3 }' | sed 's/\.//'` ; set freeMB=`expr $freeblocks \* 4096 / 1048576`; set free=`echo $freeMB MiB free`
. Anda kemudian dapat melakukanecho $free
untuk mencetak jumlah memori bebas. Anda juga bisa membuat alias:alias free echo $freeMB MiB free
.Menilai dengan pertanyaan Anda yang lain , saya pikir Anda telah menemukan penggunaan utilitas Activity Monitor untuk melihat status memori Anda, bukan? Sebagai catatan, ada di / Applications / Utilities / Activity Monitor.app.
sumber
Tidak ada padanan pasti yang didistribusikan dengan Mac OS X, tetapi ada beberapa cara lain untuk mendapatkan informasi:
system_profiler
- Memperlihatkan semua info Profil Sistem Mac di shellsysctl -a | grep mem
atausysctl hw.memsize
(total mem)sumber
Anda dapat mencoba perintah
allmemory
jika Anda menginginkan alat baris perintah yang melaporkan penggunaan memori yang sangat rinci.sumber
allmemory
mungkin sangat lama - bagi saya hari ini, lebih dari empat menit per putaran, YMMV. Prosesallmemory
untuksysdiagnose
mungkin memakan waktu lebih lama.Di atas adalah terlalu banyak upaya untuk seleraku, dan mengasumsikan bahwa Anda memiliki instalasi sepenuhnya matang juga ... Jika Anda sudah boot dari disk start up Mac OS X, maka semua solusi di atas jelas tidak akan berfungsi. .. Cukup gunakan perintah "hostinfo", inilah output dari MBAir pertengahan 2012 saya yang menjalankan Mavericks (10.9.1):
Bagusnya tentang perintah ini adalah bahwa ia sudah diinstal sebelumnya dengan installer 10.9 juga di bawah
/usr/bin
, jadi sangat berguna,idealnya, jika Anda hanya menginginkan RAM maka terbitkan:
Tidak tahu apakah hostinfo ada di OS sebelumnya ...
sumber
hostinfo
menunjukkan memori yang digunakan ?Ini harus dilakukan dengan baik :)
sumber
Saya pikir hari ini,
psutil
danmeminfo.py
skripnya memberikan rincian penggunaan memori yang paling membantu. Untuk mencobanya:Output yang dihasilkannya terlihat seperti ini:
Perhatikan
Available
baris, yang menunjukkan perkiraan seberapa banyak memori yang sebenarnya tersedia untuk memulai aplikasi baru , tanpa bertukar.Saya tidak tahu ada utilitas MacOS lain yang menyediakan perkiraan memori yang tersedia.
Demi perbandingan: Pada sistem Linux, jenis informasi yang sama disediakan di
available
kolom dalam output dari versi saat inifree
:Itu
available
kolom dalamfree
output yang hanya berasal dariMemAvailable
dalam/proc/meminfo
. Dan pada sistem yang ada/proc/meminfo
, psutil juga hanya menggunakannya untuk memperkirakan memori yang tersedia.Tapi MacOS tidak memiliki
/proc/meminfo
, sehingga untuk memperkirakan memori yang tersedia dalam kasus itu, psutil mempekerjakan algoritma yang sama digunakan pada Linux untuk menghitungMemAvailable
untuk/proc/meminfo
.sumber
Anda dapat mencoba
memory_pressure
perintahnya. Lihat output sistem saya (i5, 4 GB RAM)sumber
Perintah Bash "bebas suka" untuk Mac OSX.
Ini adalah penerbitan ulang kedua dari pos ini. Awalnya, saya mendapat dua
-1
. Satu karena saya tidak menggambarkan dalam bahasa Inggris, itu diperbaiki. Yang lain karena saya menggunakangawk
(yang bukan merupakan bagian dari instalasi standar OS X), itu juga diperbaiki, sekarang saya gunakanawk
. Itu-2
masih ada ;-). Yang terbaik mungkin sekarang untuk menguji dan mengevaluasi perintah itu sendiri?Saya meninjau ide pertama saya untuk membangun hanya satu perintah berorientasi pengguna akhir dengan tampilan yang ramah dan sangat dapat dikonfigurasi, saya membuat dua:
free-like.sh
sebuah skrip yang selalu berorientasi "pengguna akhir", dengan lebih akurat, tampilan "ramah" dan dapat dikonfigurasi, tetapi dengan lebih banyak perhitungan dan konsumsi sumber daya,free-like-raw.sh
, perintah sekarang berorientasi pengembang, sysadmin, dll., dengan lebih sedikit perhitungan dan konsumsi sumber daya, tetapi juga dengan kurang presisi, kurang "ramah" tampilan.Data untuk memori fisik diekstraksi dari hasil perintah
vm_stat
(yang mengembalikan hasil di blocksize). Ketidaktepatan yang dihasilkan dari transformasi dalam byte (number_of_blocks * block_size, nilai default dari perhitungan) akan berada di antara 0 <ukuran blok. Data untuk memori virtual diambil daritop
perintah. Ketidaktepatan di sini terkait dengan unit referensi daritop
perintah: kilo, mega, giga.Perhitungan dilakukan dengan menggunakan
awk
yang dibulatkan (tidak sepertibc
).awk
juga lebih cepat daribc
. Anda dapat melihat skrip pengujian di sini: http://myblog.robert.sebille.name/article29.html#awk-bcAnda dapat melihat hasil dari perintah dalam byte (default), dalam kilo, mega atau giga, dengan x tempat desimal dalam kasus free-like.sh dan jika Anda meminta tampilan dalam mega ou giga.
Script terlalu panjang untuk dikirim, tetapi Anda dapat menemukannya di artikel blog saya ini: http://myblog.robert.sebille.name/article29.html
Artikel ini dalam bahasa Prancis, tetapi menampilkan satu contoh tampilan untuk setiap perintah dan bantuannya yang terintegrasi (
./free-like.sh -h
dan./free-like-raw.sh -h
), dalam bahasa Inggris. Bantuan ini sepenuhnya menggambarkan perintah. Artikel ini juga menampilkan kode.Bahasa Inggris bukan bahasa ibu saya. Jika seseorang ingin memperbaiki kesalahan dalam bantuan terintegrasi, ia disambut;).
milikmu.
sumber
gawk
yang bukan bagian dari instalasi OS X standar.Ini berjalan pada $ PS1 saya:
https://github.com/vigo/dotfiles-universal/blob/master/prompts/free_memory
(Versi Ruby: https://github.com/vigo/dotfiles-universal/blob/master/prompts%2Ffree_memory.rb )
sumber
vm_stat
menunjukkan Anda dalam kilobyte.Oneliner di bawah ini ditampilkan dalam megabita:
Pengembalian:
sumber
Jika Anda menggunakan fishshell di osx, bersama dengan fisher paket manajernya.
Saya menulis ekstensi berikut: https://github.com/fisherman/free
Ini adalah pengulangan lengkap dari perintah gratis untuk osx. Lihat sendiri
sumber
top atau htop juga dapat membantu menyelesaikan masalah.
sumber