Como dice @khedron , puede ver esta información en el Monitor de actividad.
Si lo desea en la línea de comandos, aquí hay un script de Python que escribí (o quizás modificado de otra persona, no puedo recordar, es bastante antiguo ahora) para mostrarle las cantidades de memoria cableada, activa, inactiva y libre:
#!/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 ))
Como puede ver, puede llamar vm_stat
desde la línea de comandos, aunque cuenta en páginas de 4kB, de ahí el script para convertir a MB.
El script también cuenta el uso de "memoria real" de todos los procesos en ejecución para la comparación (esto no coincidirá con ningún valor específico de las estadísticas generales de la memoria, porque la memoria es una bestia compleja).
Aquí hay un ejemplo de la salida del script en mi sistema:
[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
(muy ligeramente ajustado para que coincida con el tamaño de la pestaña en StackExchange;)
ps -caxm -orss= | awk '{ sum += $1 } END { print "Resident Set Size: " sum/1024 " MiB" }'
El comando que necesita es
vm_stat
: similar a la herramienta tradicional de Unixvmstat
pero con algunas diferencias específicas de MACH. La página del manual está bien escrita.fuente
Parece que la razón por la que es lenta es porque
top -l 1
siempre se demora un segundo después de completar, el retraso estándar entre actualizaciones. Agregar -s 0 al comando lo completa al instante:Además, para mayor claridad, me gusta mostrar cada componente mem en su línea, por lo que agregué 9 espacios para la alineación con 'PhysMem:' en la cadena de reemplazo de sed:
fuente
vm_stat
.top
son significativamente más lentas que las llamadas,vm_stat
pero eltop
extracto es mucho menos detallado y la unidad es megabyte y no páginas. Para ser aún menos detallado los saltos de línea se pueden quitar yawk
pueden ser sustituidos porgrep
lo que resulta entop -l 1 | grep ^PhysMem
.page
unidades inútiles / requiere algún tipo de postprocesamiento hacky para hacer que dichas unidades sean interpretables.Aquí hay una línea simple para hacer que toda la
vm_stat
salida sea más amigable para los humanos:fuente
En caso de que solo esté realmente interesado en el uso de intercambio (cuál sería la última línea de salida
free
):fuente
Hay un comando de terminal similar a
free
Mac OS X ... se llamatop
Para obtener más información, puede consultar este documento de soporte de Apple.
Mac OS X: Cómo ver el uso de la memoria con la utilidad "superior"
fuente
htop
Simplemente tomando la solución de @zack y agregando bloques inactivos y especulativos.
fuente
Solo para expertos de Unix:
fuente
top -l1 | awk '/PhysMem/ {print $2}'
en macos> = High Sierrafuente
tcsh
(mi predeterminado) osh
. ¿Es el comando específico de shell?bash
yksh
específico. Entcsh
intento:set freeblocks=`vm_stat | grep free | awk '{ print $3 }' | sed 's/\.//'` ; set freeMB=`expr $freeblocks \* 4096 / 1048576`; set free=`echo $freeMB MiB free`
. Luego puede hacerecho $free
para imprimir la cantidad de memoria libre. También puede crear un alias:alias free echo $freeMB MiB free
.A juzgar por su otra pregunta , creo que ha encontrado el uso de la utilidad Monitor de actividad para ver el estado de su memoria, ¿verdad? Solo para el registro, está en / Aplicaciones / Utilidades / Activity Monitor.app.
fuente
No hay un equivalente exacto que se distribuya con Mac OS X, pero hay otras dos formas de obtener la información:
system_profiler
- Muestra toda la información del perfil del sistema de Mac en el shellsysctl -a | grep mem
osysctl hw.memsize
(total mem)fuente
Puede probar el comando
allmemory
si desea una herramienta de línea de comando que informe sobre el uso de memoria extremadamente detallado.fuente
allmemory
puede ser inesperadamente larga, para mí hoy, más de cuatro minutos por ejecución, YMMV. Una carrera deallmemory
forsysdiagnose
puede llevar considerablemente más tiempo.Lo anterior es demasiado esfuerzo para mi gusto, y supone que usted también tiene una instalación completa ... Si ha arrancado desde un disco de inicio de Mac OS X, entonces todas las soluciones anteriores obviamente no funcionarán. .. Solo use el comando "hostinfo", aquí está el resultado de mi MBAir de mediados de 2012 ejecutando Mavericks (10.9.1):
Lo bueno de este comando es que viene preinstalado con el instalador 10.9 también debajo
/usr/bin
, por lo que es muy útil,idealmente, si solo quieres RAM, entonces emite:
Sin embargo, no sé si hostinfo existe en cualquier sistema operativo anterior ...
fuente
hostinfo
muestra la memoria usada ?Esto debería hacerlo bien :)
fuente
Creo que en estos días,
psutil
y sumeminfo.py
script proporciona los detalles más útiles sobre el uso de la memoria. Intentarlo:La salida que produce se ve así:
Observe la
Available
fila, que muestra una estimación de cuánta memoria está realmente disponible para iniciar nuevas aplicaciones , sin intercambiar.No conozco ninguna otra utilidad MacOS que proporcione esa estimación de memoria disponible.
En aras de la comparación: en un sistema Linux, se proporciona el mismo tipo de información en la
available
columna en la salida de las versiones actuales defree
:Esa
available
columna en lafree
salida solo viene deMemAvailable
adentro/proc/meminfo
. Y en los sistemas que tienen/proc/meminfo
, psutil también solo lo usa para estimar la memoria disponible.Pero MacOS no tiene
/proc/meminfo
, por lo que para estimar la memoria disponible en ese caso, psutil emplea el mismo algoritmo utilizado en Linux para el cálculoMemAvailable
de/proc/meminfo
.fuente
Puedes probar el
memory_pressure
comando. Ver la salida de mi sistema (i5, 4 GB de RAM)fuente
Comandos Bash "gratis como" para Mac OSX.
Esta es la segunda reedición de esta publicación. Al principio, tengo dos
-1
. Uno porque no estaba describiendo en inglés, está corregido. El otro porque lo uségawk
(que no es parte de una instalación estándar de OS X), también está corregido, ahora lo usoawk
. El-2
todavía están allí ;-). ¿Quizás lo mejor es probar y evaluar los comandos por sí mismos?Revisé mi primera idea para construir solo un comando orientado al usuario final con una pantalla amigable y altamente configurable, hice dos:
free-like.sh
un script siempre orientado al "usuario final", con más precisión, una pantalla "amigable" y configurable, pero con más cálculos y consumo de recursos,free-like-raw.sh
, un comando ahora orientado a desarrolladores, administradores de sistemas, etc., con menos cómputo y consumo de recursos, pero también con menos precisión, pantalla menos "amigable".Los datos para la memoria física se extraen de los resultados del comando
vm_stat
(que devuelve los resultados en tamaño de bloque). La imprecisión resultante de la transformación en bytes (número_de_bloques * tamaño_bloque, el valor predeterminado de los cálculos) estará entre 0 <el tamaño del bloque. Los datos para la memoria virtual se toman deltop
comando. La imprecisión aquí está vinculada a la unidad de referencia deltop
comando: kilo, mega, giga.Los cálculos se realizan utilizando los
awk
aspectos redondeados (en lugar debc
).awk
También es más rápido quebc
. Puede ver el script de prueba aquí: http://myblog.robert.sebille.name/article29.html#awk-bcPuede ver los resultados de los comandos en bytes (predeterminado), en kilo, mega o giga, con x decimales en el caso de free-like.sh y si pregunta la pantalla en mega ou giga.
Los scripts son demasiado largos para una publicación, pero puede encontrarlos en este artículo de mi blog: http://myblog.robert.sebille.name/article29.html
El artículo está en francés, pero muestra un ejemplo de visualización para cada comando y su ayuda integrada (
./free-like.sh -h
y./free-like-raw.sh -h
), en inglés. Estas ayudas describen completamente los comandos. El artículo muestra también los códigos.El inglés no es mi lengua materna. Si alguien quiere corregir errores en la ayuda integrada, es bienvenido;).
tuya.
fuente
gawk
que no sea parte de una instalación estándar de OS X.Esto se ejecuta en mi $ PS1:
https://github.com/vigo/dotfiles-universal/blob/master/prompts/free_memory
(Versión Ruby: https://github.com/vigo/dotfiles-universal/blob/master/prompts%2Ffree_memory.rb )
fuente
vm_stat
te muestra en kilobytes.La línea de abajo se muestra en megabytes:
Devoluciones:
fuente
Si es el caso, utiliza fishshell en osx, junto con fisher, su administrador de paquetes.
Escribí la siguiente extensión: https://github.com/fisherman/free
Es un rehacer completo del comando gratuito para osx. Ver por ti mismo
fuente
top o htop también puede ayudar a resolver el problema.
fuente