sensors-detect
を使用してシステムでlm-sensors
を実行しています
だから、lm-sensors
のようなサードパーティのソフトウェアなしで、ファンとCPUの温度を手動で見つけるにはどうすればいいのだろうか?それらがどこに保存されているかわかりません。
processor : 0
vendor_id : AuthenticAMD
cpu family : 16
model : 6
model name : AMD Athlon(tm) II X2 240e Processor
power management: ts ttp tm stc 100mhzsteps hwpstate
x86_64
あなたが望むのは/sys/class/hwmon
と/sys/class/thermal
のようです。
どちらも、必要なデータへの単純なシェルベースのアクセスを提供します(hwmonディレクトリには他のセンサータイプも含まれます)。それぞれには、システム内のセンサーインターフェイスごとに1つのディレクトリがあります(複数のセンサーがある場合があります)。
ただし、次の3つの点に注意してください。
sensors
コマンドを1秒間に1回実行しても、目に見える効果はありません。実際、上記のディレクトリ内のファイルを定期的に読み取ると、さらに効果が上がる場合があります。この回答は、Machine Specific Registers(MSR)に直接アクセスすることにより、一部のIntelプロセッサーのプロセッサー温度を手動で監視する方法の1つです。
最初に注意することは、この場合、MSRから読み出されるものはTcc(限界温度)に関連するため、実際の温度を決定するには追加の計算が必要です。
Intel®64 and IA-32 Architectures Software Developer's Manual 、またはお客様の場合はAMDの同等物を参照してください。
私の場合、0x1B1、別名IA32_PACKAGE_THERM_STATUSのMSRのビット22〜16が必要です。私の古いi7-2600KのTccは98度です。
温度(およびCPU周波数)を手動で監視する簡単なスクリプトを次に示します。
#! /bin/dash
#
# temp_mon3 Smythies 2016.10.05
# a simplified version of temp_mon2,
# for monitoring temp.
# Note: it is on purpose that -a is not used.
# Also CPU0 frequency (1 is good enough, when all
# are loaded).
#
# temp_mon2 Smythies 2016.09.29
# Monitor Package temperatures.
# Use clock modulation to control temps.
# i.e. simulate the second to last level
# of defense.
# Use simple primatives.
# run as Sudo
# hardcoded for my tcc of 98 degrees.
#
echo ... begin package temperature monitoring ...
#
# In case I forgot (which I often do)
modprobe msr
#
# first let the drastic effect of the Sudo command decay
# Done later in temp_mon3.
#
# some stuff
COMMAND="rdmsr --bitfield 22:16 -u 0x1B1"
COMMAND2="cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq"
#
# then get on with it
while [ 1 ];do
sleep 4
TEMP_RAW=$(eval $COMMAND)
CPU0_FREQ=$(eval $COMMAND2)
TEMP_ACT=$((98-TEMP_RAW))
echo "$TEMP_ACT $CPU0_FREQ"
done
次に、出力のサンプルを示します。しばらくするとCPU負荷が追加されます(温度は31度から73度になります)。
$ Sudo ./temp_mon3
[Sudo] password for doug:
... begin package temperature monitoring ...
31 1605275
31 1605154
32 1605164
30 1605148
31 1605176
51 3511279
54 3511278
55 3511279
57 3511283
58 3511279
60 3511278
61 3511284
63 3511279
64 3511280
64 3511280
66 3511280
67 3511278
68 3511280
68 3511281
69 3511278
71 3511280
70 3511281
71 3511281
71 3511280
72 3511276
72 3511277
73 3511283
73 3511279
^C
本当に何が欲しいのか分かりません。 lm-sensorプログラム(およびsensors
コマンド)は、libsensorライブラリを使用します。 Ubuntu 18.04を使用する場合、libsensors4、バージョン3.4.0-4です。これは、sys
ディレクトリに見られる温度を読み取るのと同じライブラリです。
まとめると、センサーは良い選択です。温度を継続的に監視するには
watch -n 1 sensors
プログラムを作成する場合は、man libsensors
でlibsensorsを調べるか、/usr/share/doc/
を調べる必要があります。 #include <sensors/sensors.h>
を含める必要があります。 sensors.conf
files / etc/sensors3.confおよび/または/ etc/sensors.confを使用します。さらに(ユーザー)構成は、/etc/sensors.d/
(使用されている場合)にあります。
一部のセンサーが不足していると思われる場合は、/sys/class/thermal
またはリンクされた/sys/devices/virtual/thermal
ディレクトリをご覧ください。
すべてのサーマルゾーンの温度を取得するには
$ cat /sys/devices/virtual/thermal/thermal_zone?/temp
77000
66000
67000
温度はミリセルシウス(mC)で測定され、77.0、66.0、67,0°Cを超える場合です。
継続的に使用するには
watch -n 1 cat /sys/devices/virtual/thermal/thermal_zone?/temp
このディレクトリには、冷却(ファン)デバイス、およびPIDレギュレーターのプログラミング方法に関する情報もあります。
また、いくつかの過熱保護はハードウェアベースでコーディングされていることをお勧めします(これは良い考えです)。
デフォルトのUbuntuリポジトリからPsensor(psensor)をインストールし、温度がユーザーが決定した最大値を超えたときにPsensorが自動的に警告音を再生するように設定します。これの目的は、警告音を鳴らすことですbeforeシステムにアプリケーションのオーバーヘッドを追加することなくシステムをシャットダウンします。
Psensorは、デスクトップ上で時計の横にあるデスクトップの右上隅の通知領域に小さな温度計アイコンとして表示されます。いつでも温度計アイコンを右クリックして、ハードウェアの温度を表示できます。