257 votos

¿Existe una versión de Mac OS X Terminal del comando "libre" en los sistemas Linux?

En Linux, a menudo uso la conexión de comandos para ver la cantidad actual de memoria libre y usada en el sistema. Por ejemplo:

 $ free
             total       used       free     shared    buffers     cached
Mem:       7264256    1010952    6253304          0     371892     189088
-/+ buffers/cache:     449972    6814284
Swap:      8126456         28    8126428
 

No parece existir cuando entro free en la Terminal de Mac OS X. ¿Hay alguna alternativa?

113voto

Shuft Puntos 420

Como @khedron dice, puede ver esta información en el Monitor de Actividad.

Si usted desea que aparezca en la línea de comandos, aquí es una secuencia de comandos de Python que escribí (o tal vez modificada de la de alguien más, no recuerdo, es bastante viejo) para mostrar la conexión de Cable, Activo, Inactivo y la memoria Libre de cantidades:

#!/usr/bin/python

import subprocess
import re

# Get process info
ps = subprocess.Popen(['ps', '-caxm', '-orss,comm'], stdout=subprocess.PIPE).communicate()[0]
vm = subprocess.Popen(['vm_stat'], stdout=subprocess.PIPE).communicate()[0]

# 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 usted puede ver, usted puede llamar vm_stat desde la línea de comandos, a pesar de que cuenta en 4kB páginas, por lo tanto la secuencia de comandos para convertir a MB.

La secuencia de comandos también se tiene en cuenta la "memoria real" uso de todos los procesos en ejecución para la comparación (esto no coincide con ningún valor específico(s) de la memoria global stats, porque la memoria es un complejo bestia).


He aquí un ejemplo de la salida de la secuencia de comandos 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 la ficha de medición de StackExchange ;)

101voto

Ryan Spears Puntos 128

El comando que necesita es vm_stat - similar a la tradicional herramienta de Unix vmstat pero con algunas diferencias MACH-específica. La página de manual está bien escrito.

77voto

Bill Puntos 11

Parece que la razón es lento se debe a top -l 1 siempre retrasos por un segundo después de completar, el retardo entre actualizaciones estándar. Añadiendo -s 0 al comando hace que sea completa al instante:

 top -l 1 -s 0 | grep PhysMem
 

Además, para mayor claridad, me gusta que muestra cada una mem-componente en su línea, por lo que añadió 9 espacios para la alineación con 'physmem:' en la cadena de sustitución sed:

 top -l 1 -s 0 | grep PhysMem | sed 's/, /\n         /g'
 

22voto

EricaJoy Puntos 56

Hay un comando de terminal similar a free en Mac OS X ... se llama top

Para más información se puede extraer de este documento de soporte de Apple.

Mac OS X: Cómo ver el uso de memoria Con la Utilidad de "arriba"

9voto

Jeremy Cantrell Puntos 7858
 #!/bin/bash
top -l 1 | grep PhysMem: | awk '{print $10}'
 

Para los expertos Unix solamente:

 top -l 1 | awk '/PhysMem:/ {print $10}'
 

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X