Jak mówi @khedron , możesz zobaczyć te informacje w Monitorze aktywności.
Jeśli chcesz go w wierszu poleceń, oto skrypt w języku Python, który napisałem (lub być może zmodyfikowałem z cudzego, nie pamiętam, jest już dość stary), aby pokazać ilość pamięci przewodowej, aktywnej, nieaktywnej i wolnej:
#!/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 ))
Jak widać, możesz po prostu wywoływać vm_stat
z wiersza poleceń, choć liczy się to na stronach 4kB, stąd skrypt do konwersji na MB.
Skrypt zlicza również użycie „rzeczywistej pamięci” wszystkich uruchomionych procesów do porównania (nie będzie to odpowiadało żadnej konkretnej wartości z ogólnych statystyk pamięci, ponieważ pamięć jest złożoną bestią).
Oto przykład danych wyjściowych skryptu w moim systemie:
[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
(bardzo nieznacznie dostosowany do rozmiaru tabulatora na StackExchange;)
ps -caxm -orss= | awk '{ sum += $1 } END { print "Resident Set Size: " sum/1024 " MiB" }'
Polecenie, którego potrzebujesz to
vm_stat
- podobne do tradycyjnego narzędzia uniksowego,vmstat
ale z kilkoma różnicami specyficznymi dla MACH. Strona podręcznika jest dobrze napisana.źródło
Wydaje się, że powód jest wolny, ponieważ
top -l 1
zawsze opóźnia się o jedną sekundę po zakończeniu, standardowe opóźnienie między odświeżeniami. Dodanie -s 0 do polecenia powoduje natychmiastowe zakończenie:Ponadto, dla jasności, lubię pokazywać każdy element mem w jego linii, więc dodałem 9 spacji dla wyrównania z „PhysMem:” w łańcuchu zastępującym sed:
źródło
vm_stat
.top
jest znacznie wolniejsze od wywoływania,vm_stat
aletop
wypakowanie jest znacznie mniej szczegółowe, a jednostka to megabajt, a nie strony. Aby być jeszcze mniej gadatliwym, można usunąć podziały linii iawk
zastąpić jegrep
wynikiemtop -l 1 | grep ^PhysMem
.page
jednostkach / wymaga jakiegoś hakera postprocessingu, aby umożliwić interpretację tych jednostek.Oto prosty linijka, dzięki której cały
vm_stat
wydruk będzie bardziej przyjazny dla człowieka:źródło
Jeśli naprawdę interesuje Cię tylko zamiana (jaka byłaby ostatnia linia danych wyjściowych
free
):źródło
Istnieje polecenie terminalu podobne do
free
systemu Mac OS X ... nazywa siętop
Więcej informacji można znaleźć w tym dokumencie wsparcia Apple.
Mac OS X: jak przeglądać użycie pamięci za pomocą narzędzia „top”
źródło
htop
Wystarczy pobrać rozwiązanie z @zack i dodać nieaktywne i spekulacyjne bloki.
źródło
Tylko dla ekspertów Unix:
źródło
top -l1 | awk '/PhysMem/ {print $2}'
na macos> = High Sierraźródło
tcsh
(mój domyślny) lubsh
. Czy polecenie jest specyficzne dla powłoki?bash
iksh
specyficzny. Wtcsh
próbie:set freeblocks=`vm_stat | grep free | awk '{ print $3 }' | sed 's/\.//'` ; set freeMB=`expr $freeblocks \* 4096 / 1048576`; set free=`echo $freeMB MiB free`
. Następnie możesz zrobić,echo $free
aby wydrukować ilość wolnej pamięci. Można również utworzyć alias:alias free echo $freeMB MiB free
.Sądząc po twoim drugim pytaniu , myślę, że znalazłeś użycie narzędzia Monitor aktywności do sprawdzania stanu pamięci, prawda? Dla przypomnienia, jest w / Applications / Utilities / Activity Monitor.app.
źródło
Nie ma dokładnego odpowiednika rozpowszechnianego w systemie Mac OS X, ale istnieje kilka innych sposobów uzyskania informacji:
system_profiler
- Pokazuje wszystkie informacje o profilu systemu Mac w powłocesysctl -a | grep mem
lubsysctl hw.memsize
(ogółem mem)źródło
Możesz wypróbować polecenie,
allmemory
jeśli potrzebujesz narzędzia wiersza poleceń, które raportuje bardzo szczegółowe użycie pamięci.źródło
allmemory
może być nieoczekiwanie długie - dla mnie dzisiaj ponad cztery minuty na uruchomienie, YMMV. Uruchomienieallmemory
dlasysdiagnose
może potrwać znacznie dłużej.Powyższe stanowi zbyt duży wysiłek dla moich upodobań i zakłada, że masz również pełnoprawną instalację ... Jeśli uruchomiłeś system z dysku startowego Mac OS X, wszystkie powyższe rozwiązania oczywiście nie będą działać. .. Wystarczy użyć polecenia „hostinfo”, oto dane wyjściowe z mojego MBAir z połowy 2012 roku z systemem Mavericks (10.9.1):
Zaletą tego polecenia jest to, że jest on wstępnie zainstalowany z instalatorem 10.9 zbyt niskim
/usr/bin
, więc jest bardzo przydatny,idealnie, jeśli chcesz tylko pamięci RAM, wydaj:
Nie wiem, czy hostinfo istnieje w poprzednich systemach operacyjnych ...
źródło
hostinfo
pokazuje zużytą pamięć?To powinno zrobić dobrze :)
źródło
Myślę, że w dzisiejszych czasach,
psutil
a jegomeminfo.py
skrypt zawiera najbardziej pomocne szczegóły dotyczące wykorzystania pamięci. Spróbować tego:Dane wyjściowe, które produkuje, wyglądają następująco:
Zwróć uwagę na
Available
wiersz, który pokazuje szacunkową ilość dostępnej pamięci na uruchomienie nowych aplikacji , bez zamiany.Nie znam żadnego innego narzędzia MacOS zapewniającego taką dostępną pamięć.
Dla porównania: w systemie Linux ten sam rodzaj informacji znajduje się w
available
kolumnie danych wyjściowych z bieżących wersjifree
:Że
available
kolumna wfree
produkcji pochodzi właśnieMemAvailable
w/proc/meminfo
. A w systemach, które je mają/proc/meminfo
, psutil również używa tego do oszacowania dostępnej pamięci.Ale MacOS nie ma
/proc/meminfo
, więc oszacować ilość dostępnej pamięci w tym przypadku psutil wykorzystuje ten sam algorytm używany w systemie Linux obliczyćMemAvailable
dla/proc/meminfo
.źródło
Możesz spróbować wykonać
memory_pressure
polecenie. Zobacz dane wyjściowe mojego systemu (i5, 4 GB pamięci RAM)źródło
Polecenia bash „za darmo jak” dla Mac OSX.
To druga odsłona tego postu. Na początku mam dwa
-1
. Jeden, ponieważ nie opisywałem go po angielsku, jest poprawiony. Drugi, ponieważ użyłemgawk
(który nie jest częścią standardowej instalacji OS X), jest również poprawiony, teraz używamawk
.-2
Wciąż tam ;-). Być może najlepiej jest teraz przetestować i ocenić same polecenia?Przejrzałem swój pierwszy pomysł, aby zbudować tylko jedno polecenie zorientowane na użytkownika końcowego z przyjaznym i wysoce konfigurowalnym wyświetlaczem, zrobiłem dwa:
free-like.sh
skrypt zawsze zorientowany na „użytkownika końcowego”, z większą dokładnością, „przyjazny” i konfigurowalny wyświetlacz, ale z większą ilością obliczeń i zużyciem zasobów,free-like-raw.sh
, programista zorientowany na polecenia, sysadmin itp., z mniejszym obliczeniem i zużyciem zasobów, ale także z mniejszą precyzją i mniej „przyjaznym” wyświetlaniem.Dane dla pamięci fizycznej są wyodrębniane z wyników polecenia
vm_stat
(które zwraca wyniki w wielkości bloku). Niedokładność wynikająca z transformacji w bajtach (liczba_bloków * rozmiar_bloku, domyślna wartość obliczeń) będzie wynosić od 0 <wielkość bloku. Dane pamięci wirtualnej są pobierane ztop
polecenia. Niedokładność jest tutaj powiązana z jednostką odniesieniatop
polecenia: kilo, mega, giga.Obliczenia są wykonywane przy użyciu
awk
zaokrąglonych wartości (w przeciwieństwie dobc
).awk
jest również szybszy niżbc
. Możesz zobaczyć skrypt testowy tutaj: http://myblog.robert.sebille.name/article29.html#awk-bcMożesz wyświetlić wyniki poleceń w bajtach (domyślnie), w kilogramach, mega lub giga, z x miejscami dziesiętnymi w przypadku free-like.sh i jeśli poprosisz o wyświetlenie w mega ou giga.
Skrypty są zbyt długie, aby opublikować post, ale można je znaleźć w tym artykule na moim blogu: http://myblog.robert.sebille.name/article29.html
Artykuł jest w języku francuskim, ale wyświetla jeden przykład wyświetlania dla każdego polecenia i jego zintegrowanej pomocy (
./free-like.sh -h
i./free-like-raw.sh -h
), w języku angielskim. Pomoce te całkowicie opisują polecenia. Artykuł wyświetla także kody.Angielski nie jest moim językiem ojczystym. Jeśli ktoś chce poprawić błędy w zintegrowanej pomocy, jest mile widziany;).
Twój.
źródło
gawk
co nie jest częścią standardowej instalacji OS X.Działa to na moim PS1 $:
https://github.com/vigo/dotfiles-universal/blob/master/prompts/free_memory
(Wersja Ruby: https://github.com/vigo/dotfiles-universal/blob/master/prompts%2Ffree_memory.rb )
źródło
vm_stat
pokazuje w kilobajtach.Poniższy oneliner pokazuje w megabajtach:
Zwroty:
źródło
Jeśli używasz fishshell na OSX, wraz z Fisherem, menedżerem pakietów.
Napisałem następujące rozszerzenie: https://github.com/fisherman/free
Jest to pełne ponowne wykonanie bezpłatnego polecenia dla systemu osx. Zobacz sam
źródło
Top lub htop mogą również pomóc rozwiązać problem.
źródło