#きっかけ
もう2021年の年末の話だけど、前回のラズパイのケースを自作してみた。で熱対策を全く考えてなかったのでちょっと心配。
実際、訓練中にラズパイがうんともすんとも言わなくなって、熱暴走を疑うことも。
#どうする
別売りでファンが売ってるし温度設定すればで自動的に回るし。。。。ポチッとで解決?
いやいや、ショルコマンドシェルスクリプトの勉強にもなるし、CPUをコマンドプロンプトに表示さえできるようにすれば、CPUの温度が高くなればケースの蓋開ければいいんだし、それでいいんじゃない?
#どうしたら出来る?
- CPUの温度を知る方法を調べて
- それをコマンドプロンプトへ反映させる
の2つのことができれば実現出来るかと。
懐かしいなぁ「コマンドプロンプト」だって、MS-DOSでもやった気がするな、config.sysだっけautoexec.batだっけ。。。遠い目。。。
1 CPUの温度を知る方法
pi@samisnotmaydog:~ $ vcgencmd measure_temp
temp=58.0'C
pi@samisnotmaydog:~ $
vcgencmd measure_temp
これはググればすぐ出てきました。
ラズパイって4コアなんだ、おぉコアごとの情報も見れるんだ。。。
https://qiita.com/kouhe1/items/5f3f0e6fdb55e7164deb
https://qiita.com/ksksue@github/items/023f7675faec5d367956
を参考にいたしました。
2 コマンドプロンプトへの反映
まず表示は温度だけでいいよね
いちいちvcgencmd measure_temp
って入力するの嫌だし
cputemp.shファイルを作って
#!/bin/bash
vcgencmd measure_temp | cut -c 6-
cut -c 6-
で最初のtemp=
をカット
名前もcputempにして実行権限つけて
pi@samisnotmaydog:~ $ chmod 777 cputemp
フムフムコマンドプロンプトにはPROMPT_COMMANDで反映できると、じゃもう出来ちゃったじゃない。
pi@samisnotmaydog:~ $ PROMPT_COMMAND="cputemp"
##なんか違う
pi@samisnotmaydog:~ $ PROMPT_COMMAND="cputemp"
58.0'C
pi@samisnotmaydog:~ $
58.0'C
pi@samisnotmaydog:~ $
リターンごとに温度はアップデートされるのはいいんだけど、2段になってしまう。
おまけに、ターミナルを起動するごとにPROMPT_COMMANDに登録しないといけない
ちょっと違う、これは絶対違う。。。
##.bashrcに書いてしまおう
プロンプトの書式は起動時に.bashrcを読み込んだ際に設定される筈だよね?DOSと一緒だよね?
でも、.bashrcの中は初心者にはナニがナニやら。。。
でもなんとなく、
if [ "$color_prompt" = yes ];then
PS1= 〜ほにゃらら〜
のところだよね多分、いや絶対。
PROMPT_COMMAND
の他にも PS1
を書き換えるとプロンプト変えれるみたいだし
その前に、ターミナルからPS1の値を表示させてみると
pi@samisnotmaydog:~ $ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]($(cputemp)):\[\033[01;34m\]\w \$\[\033[00m\]
となったので、多分この何処かに先ほどのcputempの値を表示する変数を挿入するといけそうな気がするな。
この出力のやたら多い\やら]やら
はエスケープシーケンスの一部らしいから、よくよく読んでみると、そんなに難しいことでも無かったけど、今回はスルー。
こうゆうのが初心者にとってネックだったりするのよね、壁よ壁ね。
以下の記事が大変参考になりました、ありがたいです。
https://qiita.com/arakaki_tokyo/items/e54d95911ec7a22a7846
そんでもって、みなさんGitのリポジトリ?、いやブランチを同じようにコマンドプロンプトに表示させておられる様子なので以下の記事を参考にさせていただいてですね。
https://qiita.com/m-tmatma/items/d9ceba9118d5f6c1be83
cputemp
ではなくて$(cputemp)
を以下のように仕込んでみたならば
pi@samisnotmaydog:~ $ PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]($(cputemp)):\[\033[01;34m\]\w \$\[\033[00m\]'
pi@samisnotmaydog(59.6'C):~ $
と見事にプロンプトに表示できることが確認できた、ヤッター。
先ほどの.bashrc
を開いて、同じように書きこんで確認。
pi@samisnotmaydog(63.4'C):~ $
これで、いちいちvcgencmd measure_temp
とか自作のcputemp
とかを打ち込まなくてもCPU温度が監視できるようになりましたとさ。
##めでたしめでたし
11月にポリテクセンターに入所して、毎月Qiitaに投稿する目標を立てたものの、訓練所の復習や並行して進めている資格の取得に時間を取られて、当初考えていたペースでは投稿できなくなってしまっているのが実情です。
これも、11月の終わり頃に実作業はほとんど終えていて、下書きのまま放置してしまっていました。
まだ、ネタはあるので、時間を見つけては投稿するつもりです。