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


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ż:


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

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.


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.



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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.