Kann ich die CPU-Temperatur und Lüftergeschwindigkeit über die Befehlszeile in OS X abrufen?

Gibt es einen Befehl, den ich über die Befehlszeile in OS X ausführen kann, um die aktuelle CPU-Temperatur und/oder die Lüftergeschwindigkeit(en) abzurufen?

Genauer gesagt möchte ich in der Lage sein, dieselben Informationen im iStat-Widget unter den Registerkarten „Lüfter“ und „Temps“ in der Befehlszeile verfügbar zu machen.

Ich würde diese Werte gerne in der Befehlszeile finden, damit sie per Skript erstellt und in ein Überwachungssetup auf meinem Mac eingesteckt werden können. Ich habe den Wunsch eines Daten-Nerds, diese Werte (und andere Statistiken) auf meinem zu sammeln und grafisch darzustellen MacBook im Laufe der Zeit.

Unter Linux scheint dies möglich zu sein, indem eine Pseudodatei unter dem /procVerzeichnis gelesen wird, aber ich bin mir nicht sicher, wie ich das Äquivalent unter OS X machen soll (falls vorhanden).

Ich weiß nichts über eingebaute, aber iStat Menus ist eine Menüleisten-App, die diese Informationen enthält. iStat Nano und iStat Pro sind Dashboard-Widgets, die diese Informationen ebenfalls enthalten.
3rd Party ist der einzige Weg in dieser Situation
Hier ist eine Terminal + App -Kombination apple.stackexchange.com/a/54332/46541
Installieren Sie einfach die Open-Source-App smcFanControl , die neben der Uhr die aktuelle Geschwindigkeit anzeigt (neben der Möglichkeit, manuell zu wechseln).
Zu welchem ​​Zweck? Was werden Sie mit diesen Daten tun?

Antworten (14)

Option Nr. 1) können Sie in Betracht ziehen, eingebaute Utility-Powermetrics zu verwenden, um die CPU- und GPU-Temperatur und viele weitere Details zu erhalten.

So erhalten Sie die CPU-Temperatur:

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

Geben Sie hier die Bildbeschreibung ein

So erhalten Sie die GPU-Temperatur:

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

Um viele weitere Details zu erhalten:

sudo powermetrics

Dies wurde auf einem Macbook Pro mit macOS Mojave getestet.

Option #2) Installieren Sie das offiziell von Intel bereitgestellte Intel® Power Gadget von hier aus

Intel® Power Gadget und starten Sie dann Intel Power Gadget über das Launchpad.

Geben Sie hier die Bildbeschreibung ein

Ergebnisbildschirm:

Geben Sie hier die Bildbeschreibung ein

Die Optionen hier sind großartig, besonders Powermetrics
Sie können dies tun sudo powermetrics --samplers smc -i1 -n1, um eine einzelne sofortige Stichprobe von SMC-Sensormesswerten zu erhalten, einschließlich CPU- und GPU-Temperatur und Lüftergeschwindigkeit.
powermetrics listet für mich keine Temperaturen auf einem 2018er MacMini mit Mojave auf.
@benwiggy Sie können sudo powermetrics ausprobieren und sehen, ob es andere aussagekräftige Informationen zurückgibt, siehe Powermetrics-Manpage. Oder Option 2, Sie können es versuchen.
Nein, sudo powermetrics funktioniert auch nicht. "smc-Werte können nicht abgerufen werden" auf einem Mac Mini. Ich mag das Intel Gadget nicht, da es Dinge im System installiert und seltsamerweise nur 1 Kern anzeigt.
auf m1 bekomme ichunrecognized sampler: smc
@VladyslavZavalykhatko sudo powermetricsfunktioniert auf m1? Wenn dies der Fall ist, können Sie eine andere Möglichkeit finden, die Sensorablesung auf 1 zu begrenzen.
Ist es möglich, einen Nicht-Sudo-Befehl auszuführen?
@JerryGreen Im Idealfall kann die /etc/sudoers-Datei auf einem Unix-System geändert werden, damit bestimmte Benutzer bestimmte Befehle/alle Befehle ohne sudo ausführen können. Für die Aktualisierung sind jedoch Administratorrechte erforderlich. Hinweis: Ich habe dies nicht auf einem Mac getestet.

Mit dem iStats Ruby Gem können Sie die CPU-Temperatur über die Befehlszeile anzeigen.

Installation

$ gem install iStats

Verwendung

$ istats all

Bildschirmfoto

sudo gem install iStats ist auf brandneuen MBP Mavericks fehlgeschlagen. Fehler sieht so aus: hastebin.com/lihaqiyeyu.vhdl
Das ist leider ein bekannter Fehler. Wenn Sie sich das Github-Repo ansehen, gibt es einen Hinweis dazu. Sie können Ruby entweder mit RVM oder brew installieren oder stattdessen diesen Befehl verwenden, um das Gem zu installieren:sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install iStats
Super, funktioniert wie ein Zauber (schöne Sparklines auch). Musste es nur mit "sudo" machen
Für Live-Updates: watch -n0 istats(Ich musste brew install watchauf OSX, bevor ich das Obige tat) Siehe: superuser.com/q/361902
Um Anzeigefehler zu beseitigen, verwenden Sie Folgendes: watch --color istats.
Hallo Chris, ich weiß nichts über Ruby - wie lautet der vollständige Pfad zu iStats?
Sobald iStats installiert ist, sollten Sie den istatsBefehl von jedem Pfad aus ausführen können.
Arbeitete wie ein Mangold in El Capitan.
an zweiter Stelle nach el capitan, der mit diesem Befehl arbeitet
Sie müssen (und sollten es wahrscheinlich auch nicht) verwenden sudo. Verwenden Sie stattdessengem install --user-install iStats
@Michael Ich habe es mit installiert gem install --user-install iStats, aber wenn ich versuche, es auszuführen istats, wird die Meldung "Befehl nicht gefunden" angezeigt.
@darksoulsong Ist ein /usr/local/binTeil von dir $PATH?
es wird installiert, sagt dann aber nur, dass iStats nicht gefunden wird
Ich komme eine Woche nach der Installation zurück und sage, dass ich den istatsBefehl jetzt sehr regelmäßig verwende. Aber heute habe ich entdeckt istats scan, was noch viel mehr Lesestoff bietet. Danke für dieses tolle Schmuckstück!

Auf BSD-Systemen kann das sysctlDienstprogramm ähnliche Informationen bereitstellen wie der /procBaum in Linux. Es meldet tatsächlich einige CPU/GPU-Temperaturinformationen von Xnu CPU Power Management (XCPM):

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

Dies scheint jedoch kein Temperaturmesswert zu sein, sondern nur ein Hinweis auf das Temperaturniveau im Vergleich zu einer Referenz.

Diese 2 Befehle drucken machdep.xcpm.cpu_thermal_level: 0und machdep.xcpm.gpu_thermal_level: 0auf Macos 10.12
Am 13.10.4 bekomme ich etwas, das wie vage glaubwürdige Messwerte aussieht (derzeit machdep.xcpm.cpu_thermal_level: 58)
was sind einheiten Celsius oder Fahrenheit, bekomme ich als Ausgabe: machdep.xcpm.cpu_thermal_level:93
Ja. Was sind die Einheiten?\
Beide geben 0 für mein MBP zurück, auf dem das neueste macOS (10.15.4) ausgeführt wird. Das Standard-Befehlszeilendienstprogramm powermetricszeigt auch einige "thermische Werte" als 0 an, zeigt aber zufällig auch die CPU/GPU-Die-Temperaturen an, was mir (und ich stelle mir alle anderen vor) eigentlich wichtig ist. Siehe Satishs Antwort und @rjmunros Kommentar.
Es stellte sich heraus, dass ich zu früh gesprochen hatte, als meine Temperatur über ~50 °C stieg, begann das thermische Niveau zu steigen. Aber ich habe immer noch keine Ahnung, was es bedeutet.
Beste Antwort: nichts zu installieren, kein sudo erforderlich.
Es zeigt ein sofortiges Ergebnis, was gut ist, aber warum zeigt es ein anderes Ergebnis als das powermetricsKommando?

Dieses Open-Source-Befehlszeilendienstprogramm hat bei mir funktioniert: https://github.com/lavoiesl/osx-cpu-temp .

Ich dachte, es wird schwieriger sein, dies zu kompilieren, aber das ist es nicht! Klappt wunderbar!
Danke, Staub! Ich bin nicht sehr dafür, Sachen von Grund auf neu zu bauen, aber das war einfach und funktioniert sofort. M. Lavoie verwendet Code, den Apple vor einiger Zeit veröffentlicht hat: Apple System Management Control (SMC) Tool Copyright (C) 2006, aber es funktioniert gut auf meinem 2011 Mini.
brew install osx-cpu-temp
Nur damit Sie es wissen, der verwendete Sensor ist die CPU-Näherungstemperatur, die sich von der CPU-PECI (CPU-Gesamttemperatur) und den individuellen Temperaturen jedes Kerns unterscheidet, die oft deutlich höher sind als die CPU-Nähe. Macs Fan Control meldet CPU Proximity auf meinem Mac als 55ºC, aber CPU PECI als 63ºC
Berichte 0.0°Czu mac studio (arm)

Update: @PressingOnAlways hat mich darüber informiert, dass diese Software nun von ihrem Entwickler als Legacy betrachtet wird. Weitere Details zum eingestellten Support finden Sie auf der Legacy-Software-Website .

Installieren Sie Temperature Monitor und führen Sie Folgendes aus, vorausgesetzt, Sie haben es in installiert /Applications:/Applications/TemperatureMonitor.app/Contents/MacOS/tempmonitor -c -l -a

Sie können auch den aktualisierten (jedoch nicht mehr in Entwicklung befindlichen, aber herunterladbaren) Hardware Monitor vom gleichen Autor verwenden:/Applications/to/HardwareMonitor.app/Contents/MacOS/hwmonitor

Danke dafür. Ich nehme an, wenn ich diese Drittanbieter-App dafür installieren muss, gibt es keine bekannte integrierte Möglichkeit, dasselbe zu tun?
Nein, ich glaube nicht. Ich habe das gleiche Programm eine Zeit lang verwendet, um die Werte mit Geektool anzuzeigen, aber keine Informationen über ein integriertes Tool gefunden. Wohlgemerkt, das war vor mehr als einem Jahr, also könnte es jetzt sein. Ich bezweifle es aber.
Es wäre toll, wenn es eine Kopie von tempmonitorauf Homebrew gäbe
tempmonitorzeigt keine Lüfterdrehzahl an
Hinweis TemperatureMonitor unterstützt keine Macs, die nach Oktober 2013 hergestellt wurden, oder so wurde es mir gesagt, als ich versuchte, es auf meinem MacBookPro Retina auszuführen.
Am 1. Oktober wurde Temperature Monitor ausgesetzt - sie wurden "Pro".
dies ist nicht mehr praktikabel, da diese Software nicht mehr aktuell gehalten wird.
die app funktioniert immer noch in big sur - auch wenn sie nicht mehr gepflegt wird. einfach /path/to/HardwareMonitor.app/Contents/MacOS/hwmonitorim Terminal ausführen

Der SMC-Sampler ist auf dem M1 (oder auf Big Sur, nicht sicher, welcher) nicht verfügbar. Sie können Frequenzen und Stromverbrauch für CPU und GPU mit Powermetrics erhalten, aber nicht die Temperatur, soweit ich das beurteilen kann.

Die Temperatur kann wahrscheinlich immer noch vom SMC abgelesen werden, aber es sieht so aus, als hätten sich die Tasten für das M1 geändert und könnten sogar zwischen den M1-Modellen unterschiedlich sein.

OS X bietet diese Funktionalität nicht. smcFanControl und die iStat-Widgets sind die typische Anlaufstelle für dieses Problem. Ich persönlich benutze smcFanControl. Es gibt mir sowohl die Temperatur als auch die Möglichkeit, den Lüfterbetrieb zu überwachen.

HINWEIS: iStat Pro ist nicht mehr von Bjango erhältlich, aber dieser MacRumors-Thread enthält Download-Links für gepatchte Versionen. Möglicherweise müssen Sie ein wenig herumscrollen, um die neueste Version zu finden, aber sie ist kostenlos (war schon immer, hier gibt es keine Piraterie) und meiner Meinung nach ist sie insgesamt besser als Menüs, obwohl sie nicht unterstützt wird.

Es gibt zwei Möglichkeiten, Ihre CPU-Statistiken anzuzeigen. Wenn Sie keine zusätzliche Software installieren möchten, können Sie viele Details über das Terminal / die Befehlszeile anzeigen.

1 #

am Terminal eingeben...

sudo powermetrics

und ganz unten sieht man folgendes...

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

oder #2

oder versuchen Sie es mit der Eingabe .. (aber Apple hat vielleicht die Details daraus auf nur die Zahlen 0 oder 1 entfernt?)

sysctl -a | grep cpu | more

oder nur thermische / Temperaturdetails?

sysctl -a | grep thermal 

die ausgabe sollte so aussehen...

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

Sie werden die Frequenzdetails und auch einige thermische Informationen bemerken ... Sie können auch "grep thermal" verwenden, wenn Sie nur daran interessiert sind ...

:)

Ich würde es lieben, wenn sysctl tatsächlich die Temperatur anzeigen würde, es wäre so einfach, schnell und integriert ... aber es meldet nur 0 oder 1 auf einem 2014 Mac Mini mit dem neuesten macOS Mojave

Bei mir funktioniert das Tool osx-cpu-tempeinwandfrei! (Danke) Ich habe ein kleines Skript erstellt, um den Wert jede Sekunde zu aktivieren und die Ausgabe zu verschönern (es wird toiletfür die hübsche Ausgabe verwendet):

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

Mit ITerm2 habe ich ein Profil erstellt, das diesen Befehl direkt nach der Anmeldung startet. ITerm2 kann auch eine Fensteranordnung speichern, also habe ich eine mit gespeichert tty-clock, htopund mein Befehl (mit dem Namen cpu-temp) hat die Größe einer Statusleiste mit sehr kleiner Schrift.

Ich habe versucht, Option 1 aus Satishs Antwort zu verbessern , um Informationen zu den SMC-Sensoren anzuzeigen:

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

Ich bin mir nicht sicher, ob dies ohne externe Tools möglich ist, aber wenn Sie nach etwas Kleinem/Leichtem (und Open Source) suchen, empfehle ich Stats .

Es enthält ein Befehlszeilentool, auf /Applications/Stats.app/Contents/Resources/smcdas der Einfachheit halber symbolisch verlinkt werden kann /usr/local/bin.

Um zB alle Temps/Sensoren aufzulisten:

smc list -t

Die smc-Werte für Temperatursensoren sind über ObjectiveC mit schnellen Bindungen zugänglich, und mehrere Python-Bibliotheken und -Pakete nutzen dies, um das Abrufen von Werten zu vereinfachen.

https://github.com/nicolargo/glances

Dieser auf Python hat Auto-Update && Farben eingebaut und kann mit einem einfachen curl- oder wget-Befehl installiert werden, wenn die Anforderungen bereits erfüllt sind.

Anforderungen

  • python >= 2.6 oder >= 3.3 (getestet mit Version 2.6, 2.7, 3.3, 3.4)
  • psutil >= 2.0.0
  • Setup-Tools
Diese Antwort funktioniert sehr gut mit modernen Betriebssystemen im Herbst 2022

Auf meinem MacMini Mitte 2011 mit OSX 10.13.6 verwende ich smczum Einstellen und Überprüfen der Lüftergeschwindigkeit sowie osx-cpu-tempder Temperatur.

https://github.com/hholtmann/smcFanControl

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

Ein weiteres neues CLI-Tool, das dies sehr gut macht, ist iSMC: https://github.com/dkorunic/iSMC

Hier ist ein Screenshot von einigen der Ausgaben:Geben Sie hier die Bildbeschreibung ein

Es zeigt keine eGPU-Temperatur an, aber diese Informationen sind ioregirgendwo vorhanden. Sie können damit einige Statistiken über Ihre GPU/eGPU manuell aus ioreg extrahieren:

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

Wenn Sie mehrere GPUs haben, werden ihre Statistiken gemischt. Ich wähle nur meine Vega 56 eGPU wie folgt aus:

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