178

Is there a command I can run from the command line in OS X to get the current CPU temperature and/or the fan speed(s)?

To be more specific, I'd like to be able to get the same info available in the iStat widget under the Fans and Temps tabs on the command line.

I'd like to be able to find these values at the command line so it could be scripted and plugged into a monitoring setup on my Mac - I have a data-nerd desire to collect and graph these values (and other stats) on my Macbook over time.

On Linux, it seems like this would be possible by reading a pseudo-file under the /proc directory, but I'm not sure how to do the equivalent on OS X (if it exists).

85

Option #1) you may consider using inbuilt utility powermetrics to get the cpu and gpu temperature and lot more other details.

To get CPU temperature:

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

enter image description here

To get GPU temperature:

sudo powermetrics|grep -i "GPU die temperature"

To get lot more details:

sudo powermetrics

This has been tested on macbook pro with macOS mojave.

Option #2) Install Intel® Power Gadget officially provided by Intel from here

Intel® Power Gadget and then launch Intel Power Gadget from the launchpad.

enter image description here

Result Screen:

enter image description here

| improve this answer | |
  • 3
    The options here are great especially Powermetrics – heretoinfinity Dec 21 '19 at 21:05
  • 17
    You can do sudo powermetrics --samplers smc -i1 -n1 to get a single instant sample of SMC sensor readings, including CPU and GPU temprature and fan speed. – rjmunro Mar 19 at 17:04
  • 4
    +1 for a solution that doesn't require installing anything. Thanks! – jamzsabb Apr 28 at 21:56
  • 1
    powermetrics doesn't list any temperatures for me, on a 2018 MacMini running Mojave. – benwiggy Jun 30 at 10:03
  • @benwiggy you can try sudo powermetrics and see if it return other meaningful info, check powermetrics man page. Or option#2 you can give it a try. – Satish Jun 30 at 14:32
226

The iStats ruby gem lets you see the CPU temperature via the command-line.

Installation

$ gem install --user-install iStats

Usage

$ iStats

Screenshot

| improve this answer | |
  • 5
    Unfortunately that's a known error. If you take a look at the Github repo there's a note about it. You can either install Ruby using RVM or brew or use this command to install the gem instead: sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install iStats – Chris911 May 8 '14 at 6:19
  • 2
    Awesome, works like a charm (nice sparklines too). Just had to do it with "sudo" – laander Sep 3 '14 at 15:09
  • 8
    For live updates: watch -n0 istats (I had to brew install watch on OSX before doing the above) See: superuser.com/q/361902 – jasonszhao Jun 22 '15 at 2:36
  • 8
    To get rid of display errors use this: watch --color istats. – Lenar Hoyt Jun 28 '15 at 15:40
  • 2
    You don't have to (and probably shouldn't) use sudo. Instead, use gem install --user-install iStats – Michael Jan 8 '18 at 17:10
39

On BSD systems, the sysctl utility can provides similar information as the /proc tree in Linux. It actually report some CPU/GPU temperature information from Xnu CPU Power Management (XCPM):

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

However this doesn't seem to be a temperature reading but only an indication of the temperature level compared to some reference.

| improve this answer | |
  • 6
    These 2 commands print machdep.xcpm.cpu_thermal_level: 0 and machdep.xcpm.gpu_thermal_level: 0 on Macos 10.12 – SebMa Sep 26 '17 at 11:53
  • 3
    On 10.13.4 I get what looks like vaguely credible readings (currently machdep.xcpm.cpu_thermal_level: 58) – tripleee May 14 '18 at 12:46
  • what are units ? celsius or fahrenheit, I get as an output: machdep.xcpm.cpu_thermal_level: 93 – dev_null Jun 7 '19 at 16:32
  • Yeah. What are the units?\ – Chet Aug 15 '19 at 21:49
  • 2
    These both return 0 for my MBP running the latest macOS (10.15.4). The stock command-line utility powermetrics also shows some "thermal level"s as 0, but happens to also display the CPU/GPU die temperatures which is what I (and I imagine everyone else) actually care about. See Satish's answer and @rjmunro's comment. – WD40 Apr 7 at 15:23
33

This open source command line utility worked for me: https://github.com/lavoiesl/osx-cpu-temp.

| improve this answer | |
  • 2
    I thought it will be harder to compile this, but it's not! Works like a charm! – Aron Lorincz Jul 17 '15 at 20:37
  • 2
    Thanks, Dust! I'm not much for building stuff from scratch but this was easy and works out of the box. M. Lavoie is using code Apple released a while back: Apple System Management Control (SMC) Tool Copyright (C) 2006 but it works fine on my 2011 Mini. – Tai Viinikka Oct 18 '16 at 13:54
  • 9
    brew install osx-cpu-temp – seeker_of_bacon Jun 4 '19 at 18:23
19

Update: @PressingOnAlways has notified me that this software is now considered legacy by its developer. Further details on the stopped support can be found on their legacy-software website.

Assuming you installed it in /Applications you'd need to run the following:

/Applications/TemperatureMonitor.app/Contents/MacOS/tempmonitor -c -l -a

Site: Temperature Monitor

| improve this answer | |
  • 1
    Thanks for this. I take it if I need to install this third-party app for it, there isn't a known built-in way to do the same? – matt b Jun 21 '12 at 15:30
  • 2
    No, I don't think there is. I've used that same program to display the values with Geektool for a time but didn't find any information about a built-in tool. Mind you that that was more than a year ago, so there ,ight be now. I doubt it though. – GhostLyrics Jun 21 '12 at 22:31
  • 2
    Note TemperatureMonitor does not support any Macs made after October 2013, or so it told me when I tried to run it on my MacBookPro Retina. – Paul Jul 30 '14 at 2:29
  • 3
    As of Oct 1st, Temperature Monitor has been suspended - they went "Pro". – eduncan911 Oct 21 '14 at 19:54
  • 7
    this no longer is viable as this software is no longer kept up to date. – PressingOnAlways May 13 '15 at 0:50
1

Im on OSX 10.11

https://github.com/nicolargo/glances

This one on python has auto-update && colors built-in and can be installed with a simple curl or wget command if requirements are already met. Requirements

python >= 2.6 or >= 3.3 (tested with version 2.6, 2.7, 3.3, 3.4)
psutil >= 2.0.0
setuptools
| improve this answer | |
  • 3
    Glances doesn't show me fanspeed and cpu temp. (MBP 13" 2012, OSX 10.12) – CodeBrauer Dec 31 '16 at 10:48
  • @agusti-pardo On Macos 10.12: psutil.cpu_temperature() AttributeError: 'module' object has no attribute 'cpu_temperature' – SebMa Sep 6 '17 at 16:57
  • @Agusti-Pardo > temperatures are currently not supported on OSX See this : github.com/giampaolo/psutil/issues/1134#issuecomment-332173195 – SebMa Sep 26 '17 at 11:51
0

On my mid-2011 MacMini with OSX 10.13.6 I use smc to set and check the fan speed plus osx-cpu-temp for the temperature.

https://github.com/hholtmann/smcFanControl

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

| improve this answer | |
0

There are 2 main ways to view your CPU stats if you don‘t want to install additional software you can view a lot of details from the terminal / command line.

1 #

type on the terminal...

sudo powermetrics

and at the bottom you will see the following...

**** 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

or #2

or try typing.. (but apple maybe removed the details from this to just numbers 0 or 1?)

sysctl -a | grep cpu | more

or thermal / temperature details only?

sysctl -a | grep thermal 

the output should look like this...

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

You will notice the frequency details and also some thermal info... you can also "grep thermal" if you are only interested in that...

:)

| improve this answer | |
0

I tried to improve option #1 from Satish's answer to display information related to the SMC sensors:

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

| improve this answer | |
New contributor
Kllngii is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .