Wie @khedron sagt , können Sie diese Informationen im Aktivitätsmonitor anzeigen .
Wenn Sie möchten, dass es in der Befehlszeile angezeigt wird, finden Sie hier ein Python-Skript, das ich geschrieben habe (oder das möglicherweise von jemand anderem geändert wurde, ich kann mich nicht erinnern, dass es jetzt ziemlich alt ist), um Ihnen die Speichermengen Wired, Active, Inactive und Free anzuzeigen:
#!/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 ))
Wie Sie sehen, können Sie einfach vm_stat
von der Kommandozeile aus aufrufen , obwohl es sich um 4kB-Seiten handelt, daher das Skript, das in MB konvertiert werden soll.
Das Skript zählt auch die "reale Speicherauslastung" aller ausgeführten Prozesse zum Vergleich auf (dies entspricht keinem bestimmten Wert aus der gesamten Speicherstatistik, da der Speicher ein komplexes Biest ist).
Hier ist ein Beispiel für die Ausgabe des Skripts auf meinem System:
[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
(sehr leicht angepasst, um der Größe der Registerkarte in StackExchange zu entsprechen;)
ps -caxm -orss= | awk '{ sum += $1 } END { print "Resident Set Size: " sum/1024 " MiB" }'
Der Befehl, den Sie benötigen, ist
vm_stat
- ähnlich dem traditionellen Unix-Tool,vmstat
aber mit ein paar MACH-spezifischen Unterschieden. Die Manpage ist gut geschrieben.quelle
Es scheint, dass der Grund dafür, dass es langsam ist, darin besteht, dass es
top -l 1
nach dem Abschluss immer um eine Sekunde verzögert wird, die Standardverzögerung zwischen den Aktualisierungen. Durch Hinzufügen von -s 0 zum Befehl wird der Vorgang sofort abgeschlossen:Außerdem zeige ich aus Gründen der Übersichtlichkeit gerne jede Mem-Komponente in ihrer Zeile an. Deshalb habe ich 9 Leerzeichen für die Ausrichtung mit 'PhysMem:' in der sed-Ersetzungszeichenfolge hinzugefügt:
quelle
vm_stat
.top
ist erheblich langsamer als das Aufrufen,vm_stat
aber dertop
Auszug ist viel weniger ausführlich und die Einheit ist Megabyte und keine Seite. Um noch weniger wortreich zu sein, können die Zeilenumbrüche entfernt undawk
durch dasgrep
Ergebnis ersetzt werdentop -l 1 | grep ^PhysMem
.page
Einheiten / erfordert eine Art hacky Nachbearbeitung, um diese Einheiten interpretierbar zu machen.Hier ist ein einfacher Einzeiler, um die gesamte
vm_stat
Ausgabe menschlicher zu gestalten:quelle
Für den Fall, dass Sie nur wirklich an der Verwendung von Swap interessiert sind (was wäre die letzte Ausgabezeile von
free
):quelle
Es gibt einen Terminalbefehl, der
free
Mac OS X ähnelt ... er heißttop
Weitere Informationen finden Sie in diesem Apple Support-Dokument.
Mac OS X: Anzeigen der Speichernutzung mit dem Dienstprogramm "top"
quelle
htop
Nehmen Sie einfach die Lösung von @zack und fügen Sie inaktive und spekulative Blöcke hinzu.
quelle
Nur für Unix-Experten:
quelle
top -l1 | awk '/PhysMem/ {print $2}'
auf MacOS> = High Sierraquelle
tcsh
(meine Standardeinstellung) oder nichtsh
. Ist der Befehl Shell-spezifisch?bash
undksh
spezifisch. Intcsh
Versuch:set freeblocks=`vm_stat | grep free | awk '{ print $3 }' | sed 's/\.//'` ; set freeMB=`expr $freeblocks \* 4096 / 1048576`; set free=`echo $freeMB MiB free`
. Sie können dannecho $free
die Menge des freien Speichers ausdrucken. Sie können auch einen Alias erstellen:alias free echo $freeMB MiB free
.Ihrer anderen Frage nach zu urteilen , haben Sie das Activity Monitor-Dienstprogramm verwendet, um Ihren Speicherstatus zu überprüfen, oder? Nur zur Veranschaulichung, es befindet sich in / Applications / Utilities / Activity Monitor.app.
quelle
Es gibt keine genaue Entsprechung, die mit Mac OS X vertrieben wird, aber es gibt ein paar andere Möglichkeiten, um die Informationen abzurufen:
system_profiler
- Zeigt alle Systemprofilinformationen des Mac in der Shell ansysctl -a | grep mem
odersysctl hw.memsize
(total mem)quelle
Sie können den Befehl ausprobieren,
allmemory
wenn Sie ein Befehlszeilentool benötigen, das eine äußerst detaillierte Speicherauslastung meldet.quelle
allmemory
kann unerwartet lang sein - für mich heute über vier Minuten pro Durchlauf. YMMV. Ein Lauf vonallmemory
forsysdiagnose
kann erheblich länger dauern.Das oben Genannte ist für mich viel zu aufwendig und setzt voraus, dass Sie auch eine vollwertige Installation haben ... Wenn Sie von einer Mac OS X-Startdiskette gebootet haben, funktionieren alle oben genannten Lösungen offensichtlich nicht. ..Verwende einfach den Befehl "hostinfo", hier ist die Ausgabe von meinem Mid-2012 MBAir mit Mavericks (10.9.1):
Das Gute an diesem Befehl ist, dass er mit dem 10.9-Installationsprogramm vorinstalliert ist. Es ist also
/usr/bin
sehr praktisch.Wenn Sie nur RAM benötigen, geben Sie im Idealfall Folgendes ein:
Ich weiß jedoch nicht, ob hostinfo in früheren Betriebssystemen vorhanden ist ...
quelle
hostinfo
zeigt verwendete Speicher?Das sollte gut gehen :)
quelle
Ich denke, diese Tage
psutil
und seinmeminfo.py
Skript bieten die hilfreichsten Details zur Speichernutzung. Es versuchen:Die Ausgabe sieht folgendermaßen aus:
Beachten Sie die
Available
Zeile, die eine Schätzung der tatsächlich verfügbaren Speicherkapazität zum Starten neuer Anwendungen ohne Auslagerung enthält.Ich kenne kein anderes MacOS-Dienstprogramm, das diese Schätzung des verfügbaren Arbeitsspeichers liefert.
Zum Vergleich: Auf einem Linux-System werden in der
available
Spalte für die Ausgabe der aktuellen Versionen vonfree
:Diese
available
Spalte in derfree
Ausgabe kommt nur vonMemAvailable
innen/proc/meminfo
. Auf Systemen, auf denen psutil installiert ist/proc/meminfo
, schätzt psutil den verfügbaren Arbeitsspeicher.Aber MacOS nicht über
/proc/meminfo
, so dass in diesem Fall den verfügbaren Speicher zu schätzen, psutil verwendet den gleichen Algorithmus auf Linux verwendet zur BerechnungMemAvailable
für/proc/meminfo
.quelle
Sie können den
memory_pressure
Befehl versuchen . Siehe die Ausgabe meines Systems (i5, 4 GB RAM)quelle
Bash-Befehle "frei wie" für Mac OSX.
Dies ist die zweite Neuauflage dieses Beitrags. Zuerst bekam ich zwei
-1
. Eine, weil ich nicht auf Englisch beschrieben habe, ist korrigiert. Das andere, weil ich es benutzt habegawk
(was nicht Teil einer Standard-OS X-Installation ist), ist ebenfalls korrigiert, was ich jetzt benutzeawk
. Die-2
sind noch da ;-). Am besten ist es jetzt vielleicht, die Befehle selbst zu testen und auszuwerten?Ich überprüfte meine erste Idee, nur einen endbenutzerorientierten Befehl mit einer benutzerfreundlichen und hoch konfigurierbaren Anzeige zu erstellen, und machte zwei:
free-like.sh
ein Skript, das immer auf den Endbenutzer ausgerichtet ist, mit größerer Genauigkeit, einer "benutzerfreundlichen" und konfigurierbaren Anzeige, aber mit mehr Berechnungen und Ressourcenverbrauch,free-like-raw.sh
, ein befehlsorientierter Entwickler, Sysadmin, etc .., mit weniger Rechenaufwand und Ressourcenverbrauch, aber auch mit weniger Genauigkeit, weniger "freundlicher" Anzeige.Die Daten für den physischen Speicher werden aus den Ergebnissen des Befehls extrahiert
vm_stat
(der die Ergebnisse in Blockgröße zurückgibt). Die Ungenauigkeit, die sich aus der Transformation in Bytes ergibt (Anzahl_der_Blöcke * Blockgröße, der Standardwert der Berechnungen), liegt zwischen 0 <der Größe des Blocks. Die Daten für den virtuellen Speicher werden demtop
Befehl entnommen . Die Ungenauigkeit hier ist an die Bezugseinheit destop
Befehls gebunden : Kilo, Mega, Giga.Berechnungen werden mit
awk
gerundeten (im Gegensatz zubc
) Beträgen durchgeführt .awk
ist auch schneller alsbc
. Sie können das Testskript hier sehen: http://myblog.robert.sebille.name/article29.html#awk-bcSie können die Ergebnisse der Befehle in Bytes (Standard), in Kilo, Mega oder Giga, mit x Dezimalstellen im Fall von free-like.sh und wenn Sie die Anzeige in Mega oder Giga fragen, anzeigen.
Die Skripte sind zu lang für einen Beitrag, aber Sie finden sie in diesem Artikel meines Blogs: http://myblog.robert.sebille.name/article29.html
Der Artikel ist in französischer Sprache, enthält jedoch ein Anzeigebeispiel für jeden Befehl und die integrierte Hilfe (
./free-like.sh -h
und./free-like-raw.sh -h
) in englischer Sprache. Diese Hilfsmittel beschreiben die Befehle vollständig. Der Artikel zeigt auch die Codes an.Englisch ist nicht meine Muttersprache. Wenn jemand Fehler in der integrierten Hilfe korrigieren möchte, ist er willkommen;).
deine.
quelle
gawk
das nicht Teil einer Standardinstallation von OS X ist.Das läuft auf meiner PS1:
https://github.com/vigo/dotfiles-universal/blob/master/prompts/free_memory
(Ruby-Version: https://github.com/vigo/dotfiles-universal/blob/master/prompts%2Ffree_memory.rb )
quelle
vm_stat
Zeigt Sie in Kilobyte an.Der Oneliner unten zeigt in Megabyte:
Kehrt zurück:
quelle
Wenn Sie fishshell auf osx benutzen, zusammen mit fisher, seinem Paketmanager.
Ich habe die folgende Erweiterung geschrieben: https://github.com/fisherman/free
Es ist eine vollständige Wiederholung des kostenlosen Befehls für osx. Überzeugen Sie sich selbst
quelle
top oder htop können ebenfalls helfen, das Problem zu lösen.
quelle