sensorsっていうパッケージを使うとCPU温度の取得ができるみたいです。
sudo apt-get install lm-sensors
とか、sudo apt install lm-sensors
とかで入れることができるはずです。
sudo sensors-detect
で検出するCPUかなんかの設定ができるみたいですが、適当にやっただけでもCPUが検出できました。
ただ自分の環境だと何故かCPU0とCPU2しか検出できませんでした。まあCPU0の温度が取得できれば自分の場合困らないので、それを取得するプログラムをpython3で記述しました。
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}')自分の場合、
$ 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
は何も書かなくてもホームディレクトリのパスに変換されます。