ラベル Linux の投稿を表示しています。 すべての投稿を表示
ラベル Linux の投稿を表示しています。 すべての投稿を表示

2020/05/31

CPU温度を取得するスクリプトを作成(Linux)

背景


PCでのソフトウェアのヒートランを行った際、CPUの温度をモニタリングする必要があったため、スクリプトを作成した。

記事の目的


CPUの温度を取得するスクリプトを作成する

lm-sensors


ここでは、CPUの温度を取得するスクリプトの記述方法について記載する。

必要パッケージの導入

CPUの温度を取得するために必要なパッケージをインストールする
sudo apt install lm-sensors

スクリプトの作成方法

スクリプトの作成方法は以下の通りである。
  1. スクリプトcpu_temperature_monitoring.shを作成する
  2. #!/bin/bash
    echo "Start to record CPU temperature!"
    DIR_NAME=~/cpu_temperature_log/`date +%Y%m%d`
    LOG_NAME=./`date +%Y%m%d_%H%M%S`_cpu_temperature.log
    mkdir -p $DIR_NAME
    cd $DIR_NAME
    echo "Date,Temperature[C]" >> $LOG_NAME
    while :
    do
        sensors | grep "Core 0:" | grep -o [+-][0-9][0-9][.][0-9] | awk '{ "date +\"%Y/%m/%d %T\"" | getline var; print var "," $0 }' >> $LOG_NAME
        sleep 1
    done
    exit 0
  3. スクリプトに実行権限を与える
  4. $ chmod 777 ./cpu_temperature_monitoring.sh 

スクリプトの実行方法

実行方法は以下の通りである。
$ ./cpu_temperature_monitoring.sh
Start to record CPU temperature!
~/cpu_temperature_monitoring_log/日付/にCPU温度のログが作成される
$ less ./cpu_temperature_log/20190923/20190923_234227_cpu_temperature.log
Date,Temperature[C]
2019/09/23 23:42:27,+51.0
2019/09/23 23:42:28,+51.0
2019/09/23 23:42:29,+51.0
2019/09/23 23:42:30,+52.0

備考

  • grepで特定の文字列だけを抽出するオプションは、-o

まとめ


  • CPUの温度を取得するスクリプトを作成した

参考文献



変更履歴


  1. 2020/05/31: 新規作成

2019/09/24

NvidiaGPUの温度を取得するスクリプトを作成(Linux)

背景


GPUを搭載したPCでのソフトウェアのヒートランを行った際、GPUの温度をモニタリングする必要があったため、スクリプトを作成した。

記事の目的


NvidiaGPUの温度を取得するスクリプトを作成する

nvidia-smi


ここでは、NvidiaGPUの温度を取得するスクリプトの記述方法について記載する。

スクリプトの作成方法

スクリプトの作成方法は以下の通りである。
  1. スクリプトgpu_temperature_monitoring.shを作成する
  2. #!/bin/bash
    echo "Start to record GPU temperature!"
    DIR_NAME=~/gpu_temperature_log/`date +%Y%m%d`
    LOG_NAME=./`date +%Y%m%d_%H%M%S`_gpu_temperature.log
    mkdir -p $DIR_NAME
    cd $DIR_NAME
    echo "Date,Temperature[C]" >> $LOG_NAME
    while :
    do
        nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits | awk '{ "date +\"%Y/%m/%d %T\"" | getline var; print var "," $0 }' >> $LOG_NAME
        sleep 1
    done
    exit 0
  3. スクリプトに実行権限を与える
  4. $ chmod 777 ./gpu_temperature_monitoring.sh 

スクリプトの実行方法

実行方法は以下の通りである。
$ ./gpu_temperature_monitoring.sh
Start to record GPU temperature!
~/gpu_temperature_monitoring_log/日付/にGPU温度のログが作成される
$ less ./gpu_temperature_log/20190923/20190923_234227_gpu_temperature.log
Date,Temperature[C]
2019/09/23 23:42:27,51
2019/09/23 23:42:28,51
2019/09/23 23:42:29,51
2019/09/23 23:42:30,52

まとめ


  • NvidiaGPUの温度を取得するスクリプトを作成した

参考文献



変更履歴


  1. 2019/09/24: 新規作成

2019/09/03

USBポートでデバイス名を固定する方法(Linux)

背景


同一デバイスを複数接続し、それらのデバイス名を固定する必要があった。デバイスが同一の為、udevのベンダーIDとプロダクトIDを利用してデバイス名を固定することができなかった。そこで、接続したUSBポートを用いた識別を行った。

記事の目的


同一デバイスを、接続したUSBポートの場所で識別し、デバイス名を固定する

接続したUSBポートでデバイスを識別


ここでは、ベンダーIDとプロダクトIDを利用した通常の識別方法と、接続したUSBポートの場所でデバイスを識別する方法についてそれぞれ記載する。

ベンダーIDとプロダクトIDを利用した識別方法

ベンダーIDとプロダクトIDを利用したデバイスの識別及びデバイス名の固定方法は下記の通りである。

  1. デバイスのベンダーIDとプロダクトIDの検索
  2. lsusbを用いて、デバイスのベンダーIDとプロダクトIDを検索する
    $ lsusb
        Bus 002 Device 002: ID idVendor:idProduct Intel Corp.
        Bus 003 Device 016: ID 054c:06c1 Sony Corp.
            :
        Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  3. udevルールの作成
  4. /etc/udev/rules.dにルールファイルを作成する
    $ sudo nano /etc/udev/rules.d/80-nfc.rules
        SUBSYSTEM=="usb", ATTR{idVendor}=="054c", ATTR{idProduct}=="06c1", SYMLINK+="nfc"
    
    これで、Bus 003 Device 016: ID 054c:06c1 Sony Corp./dev/nfcとして毎回認識されるようになった。

接続したUSBポートの場所を利用した識別方法

上記方法では、同一のデバイスの場合、識別できない。そこで、接続したUSBポートで識別する。
  1. デバイスが接続されたUSBポートを探索する
  2. /dev/serial/by-path/以下に、接続したデバイスがUSBポートの位置で識別され、配置されている
    $ ls /dev/serial/by-path/
    pci-0000:00:1a.0-usb-0:1:1.0-port0
    pci-0000:00:1d.0-usb-0:2:1.0-port0
  3. シンボリックリンクを作成し、デバイス名を固定する
  4. /dev/にシンボリックリンクを作成することで、そのUSBポートに接続したデバイスのデバイス名が固定される
    $ sudo ln -s /dev/serial/by-path/pci-0000:00:1a.0-usb-0:1:1.0-port0 /dev/nfc
    これで、USBポートpci-0000:00:1a.0-usb-0:1:1.0-port0に接続されたデバイスが/dev/nfcとして毎回認識されるようになった。

備考

  • /dev/serial/by-id/以下に、接続したデバイスがシリアル番号で識別され、配置されている
  • /dev/disk/以下に、接続したディスクが/dev/serial/と同様の形でに配置されている

まとめ


  • 同一デバイスを、接続したUSBポートの場所で識別し、デバイス名を固定する方法について記載した

参考文献



変更履歴


  1. 2019/09/03: 新規作成

MQTTの導入

背景 IoTデバイスの接続環境構築のため、MQTT(mosquitto)の導入を行った。 記事の目的 MQTT(mosquitto)をUbuntuに導入する mosquitto ここではmosquittoについて記載する。 MQTT MQTT(Message Qu...