Używasz terminala, aby uzyskać aktualną prędkość wentylatora?

27

Chciałbym zobaczyć aktualne prędkości wentylatorów mojego MacBooka i iMaca za pomocą terminala. Przekonałem się, że spindumpwtedy cat /tmp/spindump.txt | grep "Fan speed"to pokaże, ale jest to bardzo wolne i intensywne procesor. Chciałbym zrobić to szybciej i wydajniej.

Wolałbym nie instalować oprogramowania innych firm, ale zrobię to, jeśli to jedyny sposób.

Czy ktoś ma jakieś sugestie, jak mogę to osiągnąć?

Dzięki

Joseph
źródło
2
Chodzi o to, że od Mavericks Apple nie zapewnia sposobu na zapytanie informacji zarządzanych przez SMC. Dlatego najlepszym sposobem byłoby użycie smcFanControl, który w rzeczywistości jest czymś więcej niż tylko sterowaniem facem.
Max Ried
1
Używam smcFanControl, ale czy jest jakiś sposób na uzyskanie dostępu do jego informacji z terminala? Najbardziej mnie to interesuje.
Joseph
Możesz użyć smcnarzędzia wiersza poleceń smcFanControl, aby uzyskać prędkość wentylatora; github.com/hholtmann/smcFanControl/tree/master/smc-command
Graham Miln
Jesteś prawie na miejscu. spindump ma manpage ( man spindump) i możesz ustawić czas działania. Odpowiedź jest poniżej.
CousinCocaine

Odpowiedzi:

22

smcFanControl

Wspominasz w swoich komentarzach o zainstalowaniu smcFanControl ; ten projekt open source zawiera narzędzie wiersza poleceń smc. Możesz użyć, smcaby uzyskać informacje o prędkości wentylatora za pośrednictwem Terminal.app:

smc -f

Aby uzyskać więcej opcji, zobacz stronę podręcznika smc .

Od wersji Mac OS X 10.5 do uzyskania informacji o prędkości wentylatora należy użyć oprogramowania innej firmy. Wygląda na to, że żadne narzędzie zainstalowane domyślnie w systemie OS X nie udostępnia tych informacji za pośrednictwem terminala.

Projekt Open Source Fan Control zawiera narzędzie wiersza poleceń, które dostarcza informacji o prędkości wentylatora. W tym artykule OS X: Bieżąca temperatura procesora w wierszu poleceń mówi o projekcie i jak wyodrębnić prędkość wentylatora:

smc -k TC0D -r | sed 's/.*bytes \(.*\))/\1/' |sed 's/\([0-9a-fA-F]*\)/0x\1/g' | perl -ne 'chomp; ($low,$high) = split(/ /); print (((hex($low)*256)+hex($high))/4/64); print "C\n";'

Unikaj spindump

spindumpwymaga uprawnień administratora, a przy ręcznym uruchomieniu spindump próbki stosów użytkowników i jądra dla każdego procesu w systemie. Jest to proces kosztowny obliczeniowo, nawet jeśli trwa jedną sekundę.

Alternatywy

Istnieją inne narzędzia i aplikacje, w tym Monitor temperatury . Zobacz Czy mogę uzyskać temperaturę procesora i prędkość wentylatora z wiersza poleceń w OS X?

Wersja wcześniejsza niż Mac OS X 10.5

W tym artykule uzyskano informacje o czujniku pokazano, jak użyć ioregdo wyodrębnienia informacji o prędkości wentylatora za pomocą:

ioreg -c IOHWSensor | grep -B3 -A11 '"type" = "fanspeed"'

Powyższy artykuł i zawierający go skrypt zostały zaprojektowane dla systemu Mac OS X 10.4.3.

Zobacz też:

Graham Miln
źródło
1
Monitor temperatury Bresink (którego używam) jest bezpłatny do odczytu temperatury, ale potrzebuje licencji na odczyt innych czujników (np. Prędkości wentylatora).
Gilby
Jest dobry, ale działa tylko za pomocą wiersza poleceń, aby znaleźć aplikację, przejdź do:cd /Applications/smcFanControl.app/Contents/Resources/
dr.dimitru
3
brew install Caskroom/cask/smcfancontroli korzystanie z niego wymaga również hasła.
Nakilon,
7

Oneliner - daje wynik po 1 sekundzie za pomocą spindump

SD=~/.spindump.txt;sudo rm $SD;sudo spindump 1 1 -file "$SD" ;grep "Fan speed" $SD

Każda oddzielna część wyjaśniona:

SD=~/.spindump.txt: utwórz zmienną za pomocą dziennika .spindump.txt

sudo rm $SD: wyczyść plik tmp przy użyciu uprawnień sudo, ponieważ plik został utworzony przez sudo spindump.

sudo spindump 1 1 -file $SD: uruchom spindump jako root (działa tylko jako root) przez 1 sekundę w 1 przedziale i wyślij plik na $ SD

grep "Fan speed" $SD: uzyskaj wiersz z napisem „Prędkość wentylatora”

Szkoda, że ​​do uruchomienia tego skryptu potrzebujemy uprawnień sudo.


> SD=~/.spindump.txt;sudo rm $SD;sudo spindump 1 1 -file "$SD" ;grep "Fan speed" $SD

Password:
Sampling all processes for 1 seconds with 10 milliseconds of run time between samples
Focusing on launchd [1]
Sampling completed, processing symbols...
Spindump analysis written to file /Users/CousinCocaine/.spindump.txt
Fan speed:       2302 rpm
Kuzyn Kokaina
źródło
Korzystam z wersji 10.8.5 na komputerze iMac, a mój raport spindump nie zawiera żadnej wzmianki o „prędkości wentylatora” ani nawet „wentylatorze”.
aaaidan
Używam 10.9.1. Nie mogę znaleźć mojej „wersji” spindump, ale moja prędkość wentylatora jest w pierwszych 20 liniach.
CousinCocaine
czy jesteś na laptopie czy komputerze stacjonarnym?
aaaidan
@aaaidan Korzystam z komputera Mac Mini (model sprzętowy: Macmini5,3) i siatkówki MBP (model sprzętowy: MacBookPro11,1). Oba mają na wyjściu zmienną „Prędkość wentylatora”.
CousinCocaine
1
Nie uważam tego za wiarygodne. na moim Macbooku muszę wyjąć część Touch, aby działała, ale wtedy rm nie działa. Także jeśli uruchomię: sudo spindump 1 1 -file /tmp/spindump.txt > /dev/null 2>&1;grep "Fan speed" /tmp/spindump.txtjedna próba działa, następna próbuje nie
markhunte
6

W Mojave spindump nie wyświetla prędkości wentylatora. Zauważyłem jednak, że powermetrics działa. Spróbuj uruchomić, sudo powermetrics | grep Fanjeśli korzystasz z Mojave.

Supersheep
źródło
Właśnie próbowałem, ale nie otrzymałem żadnych danych wyjściowych dotyczących prędkości wentylatora, również strona podręcznika nic nie wskazuje. Jak dokładnie działa to na komputerze Mac?
nohillside
Powermetrics generuje prędkość wentylatora po kilku sekundach, więc pozwól mu działać, dopóki nie spróbuje SMC. Na stronie podręcznika dla powermetrics 10.14.4 widzę, co następuje w sekcji opisu wyników: „SMC: Próbnik smc wyświetla informacje dostarczone przez kontroler zarządzania systemem. Na obsługiwanych platformach obejmuje to prędkość wentylatora i informacje z różnych czujników temperatury . ” Mój system to MacBookPro15,1 2018.
Supersheep
Ach, z jakiegokolwiek powodu nie odczytuje wartości SMC na moim Macu Mini ( unable to get smc values).
nohillside
2

Niedawno więc sprawdziłem możliwe polecenia za pomocą terminala (przytrzymaj klawisz Esc, aż pojawi się monit w terminalu) i znalazłem polecenie, które może sprawdzić prędkość wentylatora CPU Poziom termiczny itp., A polecenie to „powermetrics” i wymaga sudo, aby to zrobić. Jeśli potrzebujesz tylko prędkości wentylatora, możesz dołączyć opcję mapowania smc, taką jak „powermetrics -s smc”. Aktualizuje się powoli, ale można go zmienić za pomocą opcji -i i podać czas w milisekundach.

Jackson Chen
źródło
-5

Kliknij trzy razy, skopiuj i wklej do Terminala:

sudo spindump 1 1 -file /tmp/spindump.txt > /dev/null 2>&1;grep "Fan speed" /tmp/spindump.txt;sudo rm /tmp/spindump.txt

Powinien generować prędkość wentylatora.

Greg
źródło
3
W pytaniu mówi, że nie chce tego dokładnie robić.
Spotlight
3
Dodatkowo na pytanie udzielono pełnej odpowiedzi w zeszłym roku.
Joseph,
Chciałbym dodać mój głos do @ Spotlight.
DA Vincent,
2
@Greg - witamy, pytając inaczej. Społeczność może czasem wydawać się nieco brutalna, co może nieco zniechęcać nowych użytkowników, takich jak ty. Pochwalam twój wysiłek, by wnieść swój wkład, i chciałem skierować Cię do naszego Centrum pomocy: Jak odpowiedzieć jako źródła do pisania odpowiedzi, które przyciągną opinie i zwiększą liczbę głosów. Nie pozwól, aby negatywne głosy na twoją pierwszą odpowiedź zniechęciły cię do przyczynienia się w przyszłości.
Allan