¿Puedo obtener la temperatura de la CPU y la velocidad del ventilador desde la línea de comandos en OS X?

¿Hay algún comando que pueda ejecutar desde la línea de comandos en OS X para obtener la temperatura actual de la CPU y/o la(s) velocidad(es) del ventilador?

Para ser más específico, me gustaría poder obtener la misma información disponible en el widget iStat en las pestañas Fans y Temps en la línea de comando.

Me gustaría poder encontrar estos valores en la línea de comando para que se pueda programar y conectar a una configuración de monitoreo en mi Mac. Tengo un deseo de nerd de datos de recopilar y graficar estos valores (y otras estadísticas) en mi MacBook a lo largo del tiempo.

En Linux, parece que esto sería posible leyendo un pseudoarchivo en el /procdirectorio, pero no estoy seguro de cómo hacer el equivalente en OS X (si existe).

No sé si está integrado, pero iStat Menus es una aplicación de barra de menú que incluye esa información. iStat Nano e iStat Pro son widgets de tablero que también incluyen esta información.
La tercera parte es la única forma de hacerlo en esta situación.
aquí hay una combinación de Terminal + aplicación apple.stackexchange.com/a/54332/46541
Simplemente instale la aplicación de código abierto smcFanControl , que muestra la velocidad actual junto al reloj (además de permitir el cambio manual).
¿Con qué propósito? ¿Qué harás con esos datos?

Respuestas (14)

Opción n. ° 1) puede considerar usar powermetrics de utilidad incorporados para obtener la temperatura de la CPU y la GPU y muchos más detalles.

Para obtener la temperatura de la CPU:

sudo powermetrics --samplers smc |grep -i "CPU die temperature"

ingrese la descripción de la imagen aquí

Para obtener la temperatura de la GPU:

sudo powermetrics --samplers smc |grep -i "GPU die temperature"

Para obtener muchos más detalles:

sudo powermetrics

Esto ha sido probado en macbook pro con macOS mojave.

Opción #2) Instale Intel® Power Gadget proporcionado oficialmente por Intel desde aquí

Intel® Power Gadget y luego inicie Intel Power Gadget desde la plataforma de lanzamiento.

ingrese la descripción de la imagen aquí

Pantalla de resultados:

ingrese la descripción de la imagen aquí

Las opciones aquí son geniales, especialmente Powermetrics
Puede hacerlo sudo powermetrics --samplers smc -i1 -n1para obtener una sola muestra instantánea de las lecturas del sensor SMC, incluida la temperatura de la CPU y la GPU y la velocidad del ventilador.
powermetrics no muestra ninguna temperatura para mí, en una MacMini 2018 con Mojave.
@benwiggy puede probar sudo powermetrics y ver si devuelve otra información significativa, consulte la página de manual de powermetrics. O la opción n. ° 2, puede intentarlo.
No, sudo powermetrics tampoco funciona. "no se pueden obtener los valores de smc" en un Mac Mini. No me gusta Intel Gadget, ya que instala cosas en el sistema y solo muestra 1 núcleo, extrañamente.
en m1 estoy recibiendounrecognized sampler: smc
@VladyslavZavalykhatko sudo powermetricsfunciona en m1? si es así, puede encontrar alguna otra forma de limitar la lectura del sensor a la cuenta 1.
¿Es posible hacer un comando que no sea sudo?
@JerryGreen Idealmente, el archivo /etc/sudoers se puede modificar en el sistema Unix para permitir que un usuario específico ejecute comandos específicos/todos los comandos sin sudo. Pero actualizar esto necesita derechos de administrador. Nota: no he probado esto en mac.

La gema de rubí iStats le permite ver la temperatura de la CPU a través de la línea de comandos.

Instalación

$ gem install iStats

Uso

$ istats all

Captura de pantalla

Sudo gem install iStats falló en nuevos MBP Mavericks. El error se ve así: hastebin.com/lihaqiyeyu.vhdl
Desafortunadamente, ese es un error conocido. Si echa un vistazo al repositorio de Github , hay una nota al respecto. Puede instalar Ruby usando RVM o brew o usar este comando para instalar la gema en su lugar:sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install iStats
Impresionante, funciona de maravilla (buenos minigráficos también). Solo tenía que hacerlo con "sudo"
Para actualizaciones en vivo: watch -n0 istats(Tuve que hacerlo brew install watchen OSX antes de hacer lo anterior) Consulte: superuser.com/q/361902
Para deshacerse de los errores de visualización, use esto: watch --color istats.
Hola Chris, no sé nada sobre Ruby. ¿Cuál es la ruta completa a iStats?
Una vez que iStats esté instalado, debería poder ejecutar el istatscomando desde cualquier ruta.
Funcionó como una acelga en El Capitán.
segundo a el capitan trabajando con este comando
No tiene que (y probablemente no debería) usar sudo. En su lugar, utilizagem install --user-install iStats
@Michael Lo instalé con gem install --user-install iStats, pero cuando intento ejecutarlo istats, aparece un mensaje de "comando no encontrado".
@darksoulsong ¿Es /usr/local/binparte de tu $PATH?
se instala pero luego simplemente dice que iStats no se encuentra
Volviendo una semana después de la instalación para decir que istatsahora lo uso muy regularmente. Pero hoy descubrí istats scan, que da muchas más lecturas todavía. Gracias por esta gran joya!

En los sistemas BSD, la sysctlutilidad puede proporcionar información similar a la del /procárbol en Linux. En realidad, informa sobre la temperatura de la CPU/GPU desde Xnu CPU Power Management (XCPM):

sysctl machdep.xcpm.cpu_thermal_level
sysctl machdep.xcpm.gpu_thermal_level

Sin embargo, esto no parece ser una lectura de temperatura, sino solo una indicación del nivel de temperatura en comparación con alguna referencia.

Estos 2 comandos imprimen machdep.xcpm.cpu_thermal_level: 0y machdep.xcpm.gpu_thermal_level: 0en Macos 10.12
El 10.13.4 obtengo lo que parecen lecturas vagamente creíbles (actualmente machdep.xcpm.cpu_thermal_level: 58)
¿Qué son las unidades? celsius o fahrenheit, obtengo como salida: machdep.xcpm.cpu_thermal_level: 93
Sí. ¿Cuáles son las unidades?\
Ambos devuelven 0 para mi MBP que ejecuta la última versión de macOS (10.15.4). La utilidad de línea de comandos estándar powermetricstambién muestra algunos "niveles térmicos" como 0, pero también muestra las temperaturas de la CPU/GPU, que es lo que realmente me importa (y me imagino que a todos los demás). Vea la respuesta de Satish y el comentario de @rjmunro.
Resulta que hablé demasiado pronto, una vez que mi temperatura superó los ~50 °C, el nivel térmico comenzó a aumentar. Pero todavía no tengo idea de lo que significa.
La mejor respuesta: nada que instalar, no se requiere Sudo.
Muestra un resultado instantáneo, lo cual es bueno, pero ¿por qué muestra un resultado diferente al powermetricscomando?

Esta utilidad de línea de comandos de código abierto funcionó para mí: https://github.com/lavoiesl/osx-cpu-temp .

Pensé que sería más difícil compilar esto, ¡pero no lo es! ¡Funciona de maravilla!
¡Gracias, polvo! No soy muy partidario de construir cosas desde cero, pero esto fue fácil y funciona de inmediato. M. Lavoie está usando el código que Apple lanzó hace un tiempo: Apple System Management Control (SMC) Tool Copyright (C) 2006 pero funciona bien en mi Mini 2011.
brew install osx-cpu-temp
Para que lo sepas, el sensor que utiliza es la temperatura de proximidad de la CPU, que es diferente de la PECI de la CPU (temperatura general de la CPU) y las temperaturas individuales de cada núcleo, que a menudo son significativamente más altas que la proximidad de la CPU. Macs Fan Control informa CPU Proximity en mi Mac como 55ºC, pero CPU PECI como 63ºC
Informes 0.0°Csobre mac studio (brazo)

Actualización: @PressingOnAlways me ha notificado que este software ahora se considera heredado por su desarrollador. Se pueden encontrar más detalles sobre el soporte detenido en su sitio web de software heredado .

Instale Temperature Monitor y, suponiendo que lo instaló en /Applications, ejecute lo siguiente:/Applications/TemperatureMonitor.app/Contents/MacOS/tempmonitor -c -l -a

También puede usar el Monitor de hardware actualizado (aunque ya no está en desarrollo, pero se puede descargar) del mismo autor:/Applications/to/HardwareMonitor.app/Contents/MacOS/hwmonitor

Gracias por esto. Supongo que si necesito instalar esta aplicación de terceros, ¿no hay una forma integrada conocida de hacer lo mismo?
No, no creo que haya. Usé ese mismo programa para mostrar los valores con Geektool durante un tiempo, pero no encontré ninguna información sobre una herramienta integrada. Tenga en cuenta que eso fue hace más de un año, por lo que podría ser ahora. Aunque lo dudo.
Sería genial si hubiera una copia tempmonitorde homebrew
tempmonitorno muestra la velocidad del ventilador
Nota TemperatureMonitor no es compatible con ningún Mac fabricado después de octubre de 2013, o eso me dijo cuando intenté ejecutarlo en mi MacBookPro Retina.
A partir del 1 de octubre, el Monitor de temperatura se suspendió: pasaron a ser "Pro".
esto ya no es viable ya que este software ya no se mantiene actualizado.
la aplicación todavía funciona en big sur, incluso si ya no se mantiene. solo ejecuta /path/to/HardwareMonitor.app/Contents/MacOS/hwmonitoren la terminal

El muestreador SMC no está disponible en el M1 (o en Big Sur, no estoy seguro de cuál). Puede obtener frecuencias y uso de energía para CPU y GPU con powermetrics, pero no la temperatura, que yo sepa.

Es probable que aún se pueda leer la temperatura en el SMC, pero parece que las teclas cambiaron para el M1 e incluso podrían ser diferentes entre los modelos M1.

OS X no ofrece esta funcionalidad. smcFanControl y los widgets iStat son las opciones habituales para este problema. Yo personalmente uso smcFanControl. Me da tanto la temperatura como la capacidad de monitorear el funcionamiento del ventilador.

NOTA: iStat Pro ya no está disponible en Bjango, pero este hilo de MacRumors tiene enlaces de descarga para versiones parcheadas. Es posible que tenga que desplazarse un poco para encontrar la versión más reciente, pero es gratis (siempre lo ha sido, no hay piratería aquí) y IMO es en general mejor que Menús, aunque no es compatible.

Hay 2 formas principales de ver las estadísticas de su CPU si no desea instalar software adicional, puede ver muchos detalles desde la terminal / línea de comando.

1 #

escriba en la terminal...

sudo powermetrics

y en la parte de abajo veras lo siguiente...

**** SMC sensors ****

CPU Thermal level: 51
GPU Thermal level: 35
IO Thermal level: 1
Fan: 2060 rpm 
CPU die temperature: 88.36 C (fan) 
GPU die temperature: 74.38 C 
CPU Plimit: 0.00 
GPU Plimit (Int): 0.00  
GPU2 Plimit (Ext1): 0.00

o #2

o intente escribir ... (¿pero Apple tal vez eliminó los detalles de esto a solo los números 0 o 1?)

sysctl -a | grep cpu | more

o detalles térmicos / de temperatura solamente?

sysctl -a | grep thermal 

la salida debería verse así...

hw.ncpu: 8
hw.activecpu: 8
hw.physicalcpu: 4
hw.physicalcpu_max: 4
hw.logicalcpu: 8
hw.logicalcpu_max: 8
hw.cputype: 7
hw.cpusubtype: 8
hw.cpu64bit_capable: 1
hw.cpufamily: 280134364
hw.cpufrequency: 2800000000
hw.cpufrequency_min: 2800000000
hw.cpufrequency_max: 2800000000
hw.cputhreadtype: 1
machdep.cpu.max_basic: 13
machdep.cpu.max_ext: 2147483656
machdep.cpu.vendor: GenuineIntel
machdep.cpu.brand_string: Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz
machdep.cpu.family: 6
machdep.cpu.model: 70
machdep.cpu.extmodel: 4
machdep.cpu.extfamily: 0
machdep.cpu.stepping: 1
machdep.cpu.feature_bits: 9221960xxxxxx657855
machdep.cpu.leaf7_feature_bits: 10155 0
machdep.cpu.leaf7_feature_bits_edx: 261xxxxxx2
machdep.cpu.extfeature_bits: 1424xxxxxx52
machdep.cpu.signature: 263777
machdep.cpu.brand: 0
machdep.cpu.features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 PCLMULQDQ DTES64 MON DSCPL VMX SMX EST TM2 SSSE3 FMA CX16 TPR PDCM SSE4.1 SSE4.2 x2APIC MOVBE POPCNT AES PCID XSAVE OSXSAVE SEGLIM64 TSCTMR AVX1.0 RDRAND F16C
machdep.cpu.leaf7_features: RDWRFSGS TSC_THREAD_OFFSET BMI1 AVX2 SMEP BMI2 ERMS INVPCID FPU_CSDS MDCLEAR IBRS STIBP L1DF SSBD
machdep.cpu.extfeatures: SYSCALL XD 1GBPAGE EM64T LAHF LZCNT RDTSCP TSCI
machdep.cpu.logical_per_package: 16
machdep.cpu.cores_per_package: 8
machdep.cpu.microcode_version: 28
machdep.cpu.processor_flag: 5
machdep.cpu.mwait.linesize_min: 64
machdep.cpu.mwait.linesize_max: 64
machdep.cpu.mwait.extensions: 3
machdep.cpu.mwait.sub_Cstates: 270624
machdep.cpu.thermal.sensor: 1
machdep.cpu.thermal.dynamic_acceleration: 1
machdep.cpu.thermal.invariant_APIC_timer: 1
machdep.cpu.thermal.thresholds: 2
machdep.cpu.thermal.ACNT_MCNT: 1
machdep.cpu.thermal.core_power_limits: 1
machdep.cpu.thermal.fine_grain_clock_mod: 1
machdep.cpu.thermal.package_thermal_intr: 1
machdep.cpu.thermal.hardware_feedback: 0
machdep.cpu.thermal.energy_policy: 1
machdep.cpu.xsave.extended_state: 7 832 832 0
machdep.cpu.xsave.extended_state1: 1 0 0 0
machdep.cpu.arch_perf.version: 3
machdep.cpu.arch_perf.number: 4
machdep.cpu.arch_perf.width: 48
machdep.cpu.arch_perf.events_number: 7
machdep.cpu.arch_perf.events: 0
machdep.cpu.arch_perf.fixed_number: 3
machdep.cpu.arch_perf.fixed_width: 48
machdep.cpu.cache.linesize: 64
machdep.cpu.cache.L2_associativity: 8
machdep.cpu.cache.size: 256
machdep.cpu.tlb.inst.large: 8
machdep.cpu.tlb.data.small: 64
machdep.cpu.tlb.data.small_level1: 64
machdep.cpu.tlb.shared: 1024
machdep.cpu.address_bits.physical: 39
machdep.cpu.address_bits.virtual: 48
machdep.cpu.core_count: 4
machdep.cpu.thread_count: 8
machdep.cpu.tsc_ccc.numerator: 0
machdep.cpu.tsc_ccc.denominator: 0
machdep.xcpm.cpu_thermal_level: 0

Notarás los detalles de la frecuencia y también algo de información térmica... también puedes "grep térmica" si solo estás interesado en eso...

:)

Me encantaría que sysctl realmente mostrara la temperatura, sería tan fácil, rápido e integrado... pero solo informa 0 o 1 en una Mac Mini 2014 con la última versión de macOS Mojave

¡ La herramienta osx-cpu-tempfunciona perfectamente para mí! (gracias) Hice un pequeño script para activar el valor cada segundo y embellecer la salida (se usa toiletpara la salida bonita):

while true; do; clear; osx-cpu-temp | toilet -f smblock; sleep 1; done;

Usando ITerm2, hice un perfil que lanza este comando justo después de iniciar sesión. ITerm2 también puede almacenar un arreglo de ventana, así que almacené uno con tty-clock, htopy mi comando (lo denominó cpu-temp) del tamaño de una barra de estado, con una fuente muy pequeña.

Traté de mejorar la opción n. ° 1 de la respuesta de Satish para mostrar información relacionada con los sensores SMC:

sudo powermetrics | sed -n '/\*\*\*\* SMC sensors \*\*\*\*/,/Number of prochots/p'

No estoy seguro de que esto sea posible sin herramientas externas, pero si está buscando algo pequeño/ligero (y de código abierto), le recomiendo Stats .

Incluye una herramienta de línea de comandos, a /Applications/Stats.app/Contents/Resources/smcla que se puede vincular /usr/local/binpara mayor comodidad.

Por ejemplo, para enumerar todas las temperaturas/sensores:

smc list -t

Se puede acceder a los valores smc para los sensores de temperatura a través de ObjectiveC con enlaces rápidos y varias bibliotecas y paquetes de Python aprovechan esto para facilitar la extracción de valores.

https://github.com/nicolargo/miradas

Este en python tiene una actualización automática y colores incorporados y se puede instalar con un simple comando curl o wget si ya se cumplen los requisitos.

Requisitos

  • python >= 2.6 o >= 3.3 (probado con la versión 2.6, 2.7, 3.3, 3.4)
  • psutil >= 2.0.0
  • herramientas de configuración
Esta respuesta funciona muy bien con sistemas operativos modernos en el otoño de 2022

En mi MacMini de mediados de 2011 con OSX 10.13.6, uso smcpara configurar y verificar la velocidad del ventilador más osx-cpu-templa temperatura.

https://github.com/hholtmann/smcFanControl

https://github.com/lavoiesl/osx-cpu-temp

Otra nueva herramienta CLI que hace esto muy bien es iSMC: https://github.com/dkorunic/iSMC

Aquí hay una captura de pantalla de algunos de los resultados:ingrese la descripción de la imagen aquí

No muestra la temperatura de eGPU, pero esa información existe en ioregalguna parte. Puede extraer algunas estadísticas sobre su GPU/eGPU manualmente desde ioreg con esto:

ioreg -l | grep '"PerformanceStatistics"' | sed -E "s/,/\\n/g;s/\"//g" | grep -E "(temp|power|Device Utilization|Fan|speed|GPU Activity)"

Si tiene varias GPU, sus estadísticas se mezclarán. Selecciono solo mi Vega 56 eGPU así:

ioreg -c AMDRadeonX5000_AMDVega10GraphicsAccelerator -r -l | grep '"PerformanceStatistics"' | sed -E "s/,/\\n/g;s/\"//g" | grep -E "(temp|power|Device Utilization|Fan|speed|GPU Activity)"

...

Device Utilization %=7
Fan Speed(%)=0
GPU Activity(%)=16
Fan Speed(RPM)=0
Temperature(C)=36
Total Power(W)=35