桐間紗路研究所日報

技術以外の話→ https://kirimasyaro.hateblo.jp

ubuntuでCPU温度のログを取る

sensorsっていうパッケージを使うとCPU温度の取得ができるみたいです。
sudo apt-get install lm-sensorsとか、sudo apt install lm-sensorsとかで入れることができるはずです。
sudo sensors-detectで検出するCPUかなんかの設定ができるみたいですが、適当にやっただけでもCPUが検出できました。
ただ自分の環境だと何故かCPU0とCPU2しか検出できませんでした。まあCPU0の温度が取得できれば自分の場合困らないので、それを取得するプログラムをpython3で記述しました。

[python]
import subprocess as p
import os
from datetime import datetime as dt
temp = p.run(['sensors'], stdout=p.PIPE).stdout.decode('utf-8')
temp = temp.split(os.linesep)[6].split(' ')
for x in temp[2:]:
    if x != '':
        temp = x[1:-2]
        break
temp = float(temp)
print(f'{dt.now()},{temp}')
[/python]

自分の場合、$ sensorsで標準出力に表示される六行目に、Core 0: +47.0°C (high = +95.0°C, crit = +105.0°C)のようにCPU0の温度が表示されていたので、それを取得して、整形して標準出力しています。正規表現とかつかって抜き出してもいいと思います。これをCSVに書き込むようにしてもいいと思います。
subprocess.run(['command'], stdout=p.PIPE).stdout.decode('utf-8')で、コマンドの標準出力を受け取ることができるというのがポイントです。
これを、crontab -eで自動実行させます。自分は三十分に一回実行させています。

自分はこのように設定しました。$HOMEは何も書かなくてもホームディレクトリのパスに変換されます。