¿Hay una versión de Mac OS X Terminal del command "gratis" en los sistemas Linux?

En Linux, a menudo uso el command gratuito para ver la cantidad actual de memory libre y usada en el sistema. Por ejemplo:

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

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

  • Actualización a 32 GB de RAM para Mac Mini Server
  • ¿Cómo bajar la RAM?
  • 2011 27 '' iMac Kernel Panic
  • ¿Por qué mi iMac ha sido más lento en los últimos meses?
  • ¿Cuáles son las consecuencias de usar DDR3 RAM en DDR2 MBP4.2?
  • Safari hace que mi MacBook sea increíblemente lenta: ¿qué hacer?
  • Cómo conectar un enrutador a la console, usando un mac
  • ¿Cómo progtwigr la ejecución del file .command (bash)?
  • Safari está usando demasiada RAM. ¿Cómo puedo networkingucir su huella de memory?
  • Enlazar <Cmd-S> en Vim
  • Necesita ayuda para usar el command 'Servicios' de Homebrew
  • ¿Es posible utilizar un terminal en serie (por ejemplo, VT420) con una Mac moderna?
  • 21 Solutions collect form web for “¿Hay una versión de Mac OS X Terminal del command "gratis" en los sistemas Linux?”

    Como dice @khedron , puedes ver esta información en Activity Monitor.

    Si lo quiere en la command-line, aquí hay un script de Python que escribí (o tal vez modificado de alguien más, no recuerdo, ya es bastante viejo) para mostrarle las cantidades de memory Alámbrica, 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 'Winetworking Memory:\t\t%d MB' % ( vmStats["Pages winetworking 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 simplemente llamar a vm_stat desde la command-line, aunque count en páginas de 4kB, de ahí el script para convertirlo a MB.

    La secuencia de commands también count el uso de "memory real" de todos los processs en ejecución para la comparación (esto no coincidirá con ningún valor específico de las statistics de memory en general, porque la memory es una bestia compleja).


    Aquí hay un ejemplo de la salida del script en mi sistema:

     [user@host:~] % memReport.py Winetworking Memory: 1381 MB Active Memory: 3053 MB Inactive Memory: 727 MB Free Memory: 1619 MB Real Mem Total (ps): 3402.828 MB 

    (muy ajustado para coincidir con el tamaño de la pestaña en StackExchange;)

    El command que necesita es vm_stat , similar al vmstat tradicional de la herramienta Unix, pero con algunas diferencias específicas de MACH. La página de manual está bien escrita.

    Parece que la razón por la que es lento es porque top -l 1 siempre demora un segundo después de completar, el retraso estándar entre actualizaciones. Agregar -s 0 al command lo completa al instante:

     top -l 1 -s 0 | grep PhysMem 

    Además, para mayor claridad, me gusta mostrar cada componente de mem en su línea, así que agregué 9 espacios para la alignment con 'PhysMem:' en la cadena de reemploop sed:

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

    Aquí hay un simple trazador de líneas para hacer que toda la salida de vm_stat más amigable para los humanos:

     $ vm_stat | perl -ne '/page size of (\d+)/ and $size=$1; /Pages\s+([^:]+)[^\d]+(\d+)/ and printf("%-16s % 16.2f Mi\n", "$1:", $2 * $size / 1048576);' free: 2330.23 Mi active: 2948.07 Mi inactive: 1462.97 Mi speculative: 599.45 Mi winetworking down: 840.46 Mi copy-on-write: 43684.84 Mi zero filled: 385865.48 Mi reactivated: 608.14 Mi 

    Hay un command de terminal similar al free en Mac OS X … se llama top

    Para get más información, puede consultar este documento de soporte de Apple.

    Mac OS X: Cómo ver el uso de la memory con la utilidad "superior"

    En caso de que solo esté realmente interesado en el uso de swap (cuál sería la última línea de salida de forma free ):

     $ sysctl vm.swapusage vm.swapusage: total = 64.00M used = 0.00M free = 64.00M (encrypted) 
     #!/bin/bash top -l 1 | grep PhysMem: | awk '{print $10}' 

    Solo para expertos de Unix:

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

    Simplemente tomando la solución de @zack y agregando bloques inactivos y especulativos.

     #!/bin/bash FREE_BLOCKS=$(vm_stat | grep free | awk '{ print $3 }' | sed 's/\.//') INACTIVE_BLOCKS=$(vm_stat | grep inactive | awk '{ print $3 }' | sed 's/\.//') SPECULATIVE_BLOCKS=$(vm_stat | grep speculative | awk '{ print $3 }' | sed 's/\.//') FREE=$((($FREE_BLOCKS+SPECULATIVE_BLOCKS)*4096/1048576)) INACTIVE=$(($INACTIVE_BLOCKS*4096/1048576)) TOTAL=$((($FREE+$INACTIVE))) echo Free: $FREE MB echo Inactive: $INACTIVE MB echo Total free: $TOTAL MB 

    A juzgar por su otra pregunta , creo que ha encontrado el uso de la utilidad Monitor de actividad para ver el estado de su memory, ¿verdad? Solo para el logging, está en / Applications / Utilities / Activity Monitor.app.

    Puede probar el command allmemory si desea una herramienta de línea de command que informe el uso de la memory extremadamente detallado.

     free="$(( $(vm_stat | awk '/free/ {gsub(/\./, "", $3); print $3}') * 4096 / 1048576)) MiB free" 

    No hay un equivalente exacto que se distribuya con Mac OS X, pero hay otras maneras de get la información:

    1. system_profiler : muestra toda la información del perfil del sistema de Mac en el shell
    2. sysctl -a | grep mem sysctl -a | grep mem o sysctl hw.memsize (mem total)

    Lo anterior es demasiado esfuerzo para mi gusto, y supone que usted también tiene una installation completamente desarrollada … Si arrancó desde un disco de inicio de Mac OS X, obviamente, todas las soluciones anteriores no funcionarán. .. Solo use el command "hostinfo", aquí está el resultado de mi MBAir mediados de 2012 ejecutando Mavericks (10.9.1):

      Mach kernel version: Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT 2013; root:xnu-2422.1.72~6/RELEASE_X86_64 Kernel configunetworking for up to 4 processors. 2 processors are physically available. 4 processors are logically available. Processor type: i486 (Intel 80486) Processors active: 0 1 2 3 Primary memory available: 8.00 gigabytes Default processor set: 195 tasks, 961 threads, 4 processors Load average: 1.61, Mach factor: 2.38 

    Lo bueno de este command es que viene preinstalado con el instalador 10.9 también en /usr/bin , por lo que es muy útil,

    idealmente, si solo quieres RAM, emite:

     $ hostinfo | grep memory 

    No sé si hostinfo existe en cualquier sistema operativo anterior, aunque …

    Puede probar el command memory_pressure . Vea la siguiente salida de mi sistema (i5, 4 Gb RAM):

     The system has 2147483648 (524288 pages with a page size of 4096). Stats: Pages free: 90009 Pages purgeable: 139593 Pages purged: 7496548 Swap I/O: Swapins: 470466 Swapouts: 530913 Page Q counts: Pages active: 407739 Pages inactive: 148277 Pages speculative: 16200 Pages throttled: 0 Pages winetworking down: 263064 Compressor Stats: Pages used by compressor: 122815 Pages decompressed: 7327420 Pages compressed: 17625795 File I/O: Pageins: 1538997 Pageouts: 86692 System-wide memory free percentage: 63% 
     top -l 1 -s 0 | awk ' /Processes/ || /PhysMem/ || /Load Avg/{print}' 

    Esto debería hacer muy bien 🙂

    Bash commands "gratis como" para Mac OSX.

    Esta es la segunda reedición de esta publicación. Al principio, obtuve dos -1 . Una porque no estaba describiendo en inglés, está corregida. El otro porque utilicé gawk (que no forma parte de una installation estándar de OS X), también se corrigió, ahora uso awk . El -2 todavía está allí ;-). Lo mejor es tal vez ahora para probar y evaluar los commands por sí mismos?

    Revisé mi primera idea para build solo un command orientado al usuario final con una pantalla amigable y altamente configurable, hice dos:

    • free-like.sh una secuencia de commands siempre orientada al "usuario final", con más precisión, una pantalla "amigable" y configurable, pero con más cálculos y consumo de resources,

    • free-like-raw.sh , un command ahora orientado al desarrollador, sysadmin, etc., con less cómputo y consumo de resources, pero también con less precisión, less pantalla "amigable".

    Los datos para la memory física se extraen de los resultados del command vm_stat (que devuelve los resultados en tamaño de bloques). La imprecisión resultante de la transformación en bytes (number_of_blocks * block_size, el valor pnetworkingeterminado de los cálculos) será entre 0 <el tamaño del bloque. Los datos para la memory virtual se toman del command top . La imprecisión aquí está vinculada a la unidad de reference del command top : kilo, mega, giga.

    Los cálculos se realizan usando awk que respeta networkingondeado (en oposition a bc ). awk también es más rápido que bc . Puede ver el script de testing aquí: http://myblog.robert.sebille.name/article29.html#awk-bc

    Puede ver los resultados de los commands en bytes (pnetworkingeterminado), en kilo, mega o giga, con x decimales en el caso de free-like.sh y si solicita la visualización en mega ou giga.

    Los guiones son demasiado largos para una publicación, pero puedes 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 pantalla para cada command y su ayuda integrada ( ./free-like.sh -h y ./free-like-raw.sh -h ), en inglés. Estas ayudas describen completamente los commands. 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.

    vm_stat te muestra en kilobytes.

    El siguiente delineador muestra en megabytes:

     paste <(vm_stat | awk 'NR>1' | grep -o ".*:") <(for i in $(vm_stat | awk 'NR>1' | tr -d '.' | awk '{print $NF}'); do perl -e "print $i/1024" | awk '{printf "%0.2f", $0}'; echo; done) | column -s: -t 

    Devoluciones:

     Pages free 11.06 Pages active 798.25 Pages inactive 776.03 Pages speculative 9.15 Pages throttled 0.00 Pages winetworking down 303.27 Pages purgeable 0.95 "Translation faults" 82172.66 Pages copy-on-write 11629.60 Pages zero filled 27685.41 Pages reactivated 1450.70 Pages purged 91.66 File-backed pages 430.20 Anonymous pages 1153.24 Pages stonetworking in compressor 481.75 Pages occupied by compressor 149.91 Decompressions 1277.92 Compressions 1622.33 Pageins 13198.02 Pageouts 66.61 Swapins 54.34 Swapouts 90.63 

    Si usa fishshell en osx, junto con fisher es su administrador de packages.

    Escribí la siguiente extensión: https://github.com/fisherman/free

    Es un rehacer completo del command gratuito para osx. Vea usted mismo

     > free total used free appmem winetworking compressed Mem: 8.00Gb 6.65Gb 1.95Gb 2.87Gb 2.09Gb 1.86Gb +/- Cache: 1.24Gb 1.87Gb Swap(43%): 2048Mb 877Mb 1171Mb Load Avg: 1.63 1.95 1.95 

    Creo que en estos días, psutil y su script meminfo.py proporcionan los detalles de uso de memory más útiles. Intentarlo:

     pip install psutil curl -O https://raw.githubusercontent.com/giampaolo/psutil/master/scripts/meminfo.py python ./meminfo.py 

    El resultado que produce tiene este aspecto:

     MEMORY ------ Total : 16.0G Available : 5.5G Percent : 65.8 Used : 13.5G Free : 1.5G Active : 7.4G Inactive : 4.0G Winetworking : 2.1G SWAP ---- Total : 1.0G Used : 33.5M Free : 990.5M Percent : 3.3 Sin : 15.9G Sout : 71.6M 

    Observe la fila Available , que muestra una estimación de cuánta memory está realmente disponible para iniciar nuevas aplicaciones , sin necesidad de intercambiar.

    No conozco ninguna otra utilidad de MacOS que proporcione ese estimado de memory disponible.

    Para fines de comparación: en un sistema Linux, se proporciona el mismo tipo de información en la columna available en el resultado de las versiones actuales de free :

      total used free shanetworking buff/cache available Mem: 7.8G 552M 182M 156M 7.1G 6.9G Swap: 0B 0B 0B Total: 7.8G 552M 182M 

    Esa columna available en salida free solo viene de MemAvailable en /proc/meminfo . Y en los sistemas que tienen /proc/meminfo , psutil también lo usa para estimar la memory disponible.

    Pero MacOS no tiene /proc/meminfo , por lo que para estimar la memory disponible en ese caso, psutil emplea el mismo algorithm utilizado en Linux para calcular MemAvailable para /proc/meminfo .

    top o htop también pueden ayudar a resolver el problema.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).