1. 概要

このチュートリアルでは、Linux端末でCPU温度を確認する方法を見ていきます。 まず、サードパーティのツールを使用せずにCPUの温度を把握する方法を説明します。 その後、同じ目的のためのいくつかの小さな便利なユーティリティについて説明します。

2. サードパーティのツールを使用せずにCPU温度を検出する

Linuxでは、ハードウェアリソースに関連するほとんどすべてのアクセス可能な詳細を読み取ることができます。 これらの詳細には、CPUサイクルのカウント、CPU温度、I / O使用量、ネットワーク使用量などが含まれます。 Linuxではハードウェアとソフトウェアをより細かく制御できるため、これはすべて可能です。

2.1. / sys /classディレクトリ

/ sysディレクトリは、Linuxカーネルとハードウェアに関する大量の情報を含む仮想ファイルシステムです。このディレクトリ内のファイルは、実際にはディスク上にありません。 代わりに、それらを読んだときに、その場で作成および更新されるだけです。

/ sys / class ディレクトリは、ハードウェアの階層です。 このディレクトリには、主にカーネルに登録されているデバイスに関する情報が含まれています。

ディレクトリの1つはthermalと呼ばれ、ハードウェアリソースの温度情報が含まれています。

$ ls -lL /sys/class/thermal
total 0
...
drwxr-xr-x 3 root root 0 Apr 7 00:05 cooling_device7
drwxr-xr-x 3 root root 0 Apr 7 00:05 cooling_device8
drwxr-xr-x 4 root root 0 Apr 7 00:05 thermal_zone0
drwxr-xr-x 3 root root 0 Apr 7 00:05 thermal_zone1
drwxr-xr-x 3 root root 0 Apr 7 00:05 thermal_zone2

このディレクトリでは、Thermal_zoneディレクトリに関心があります。 Thermal_zoneディレクトリは、マザーボードに配置されている温度計に対応しています。

cdthermal_zone0ディレクトリに入れて、何が含まれているかを確認しましょう。

$ cd thermal_zone0 && ls -lL
total 0
...
drwxr-xr-x 2 root root    0 Apr  7 00:05 subsystem
-rw-r--r-- 1 root root 4096 Apr  7 00:55 sustainable_power
-r--r--r-- 1 root root 4096 Apr  7 00:29 temp
-r--r--r-- 1 root root 4096 Apr  7 00:29 type
-r--r--r-- 1 root root 4096 Apr  7 00:29 trip_point_0_temp
...

ご覧のとおり、多くのファイルとディレクトリが含まれています。 ただし、関心があるのはtempファイルとtypeファイルのみです。

2.2. tempファイル

一時ファイルにはゾーンの実際の温度が含まれています。単一の整数値のみが含まれている必要があります。

$ cat temp
27800

この値を100で割ると、摂氏での実際の温度が得られます。 この場合、27.8°Cになります。

2.3. typeファイル

タイプファイルには、温度が対応するゾーンを示す値が含まれています

$ cat type
acpitz

acpitz温度計はCPUソケットの横にあります。 ただし、CPU温度に関心があります。 同様に、CPUの場合、この熱情報を含む可能性のある他のThermal_zoneディレクトリを確認できます。

2.4. すべてを一緒に入れて

これらのディレクトリはマシンによって異なる可能性があるため、この方法でCPU温度をチェックするのは面倒な場合があります。 興味深いことに、ゾーン情報はハードウェアリソースのドライバーで定義されています。

そのため、この情報を読みやすい方法で出力するコマンドを使用することをお勧めします。

$ paste <(cat /sys/class/thermal/thermal_zone*/type) <(cat /sys/class/thermal/thermal_zone*/temp) | column -s $'\t' -t | sed 's/\(.\)..$/.\1°C/'
acpitz        27.8°C
acpitz        29.8°C
x86_pkg_temp  38.0°C

それを分解しましょう:

  • thermal_zoneディレクトリからtypeおよびfileファイルを読み取り、その結果をpastにフィードします。
  • past コマンドは、対応するファイルの行をタブで区切って整列します
  • pastコマンドの出力をcolumnにパイプします。これにより、出力がさらに列に整列されます。
  • 次に、の内容が sed、にパイプされ、値が読み取り可能な温度値に置き換えられます。

さらに、このかなり長いコマンドから単純なシェルスクリプトを作成し、直接または別のスクリプトから実行することができます。

3. 代替: lm_sensors

lm_sensors は、温度、電圧、ファン速度、およびその他のハードウェアセンサー情報を監視するための便利なユーティリティです。

3.1. インストール

主要なLinuxディストリビューションでは、lm_sensorsがすでにインストールされているはずです。 ただし、そうでない場合は、パッケージマネージャーを使用して、ディストリビューションの公式パッケージリポジトリからインストールできます。

# Ubuntu-like
$ apt install lm-sensors
# Fedora, RHEL, openSUSE
$ yum install lm_sensors
# Arch-like
$ pacman -S lm_sensors

インストールしたら、確認しましょう。

$ sensors -v
sensors version 3.6.0+git with libsensors version 3.6.0+git

3.2. 使用法

Sensors コマンドを入力するだけで、lm_sensorsを使用できます。

$ sensors
acpitz-acpi-0
Adapter: ACPI interface
temp1:        +27.8 C
temp2:        +29.8 C

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +40.0 C
Core 0:        +39.0 C
Core 1:        +40.0 C

ご覧のとおり、各コアのCPU温度は、それぞれ Core0フィールドとCore1フィールドに示されています。

また、 CPU温度が表示されない場合は、事前にsensors-detectコマンドを実行できます Sensors-detect コマンドは、マシンに接続されている使用可能なすべてのセンサーを検出します。

4. 代替: acpi

acpi は、温度とバッテリーの情報を表示するために使用できるもう1つの軽量の代替手段です。

4.1. インストール

acpi ユーティリティはほとんどのディストリビューションに付属していないため、パッケージ名acpiを使用して公式パッケージリポジトリからインストールする必要があります。

# Ubuntu-like
$ apt install acpi
# Fedora, RHEL, openSUSE
$ yum install acpi
# Arch-like
$ pacman -S acpi

インストール後、それを確認しましょう:

$ acpi -v
acpi 1.7

4.2. 使用法

-tまたは–thermal オプションを指定して実行するだけで、acpiを使用して温度情報を印刷できます。

$ acpi -t
Thermal 0: ok, 29.8 degrees C
Thermal 1: ok, 27.8 degrees C

-iまたは–detailsオプションを使用して詳細レポートを印刷することもできます。

5. 結論

この記事では、CPUの熱状態を確認する方法について説明しました。 最初に、 / sys /classディレクトリでカーネルによって提供される生の熱の詳細を実験しました。 その後、このプロセスを自動化するいくつかの代替ツールを使用しました。