めも(cron、XPath、awk)
cron
前からcronは使いたかったのだけど、なぜか使えなくて諦めてた。GPUの温度を定期的に測るために使おうと思って調べてたらなんとか使えたのでメモ。
minute hour dat month dayofweek command
の形式で書く。
上のURLに書いてある事もまとめて、注意点は
XPath
GPUの情報の出力がXMLなのでRubyで処理することにした。RubyでXMLを処理するときはREXMLが便利なのだが、今までいちいち子ノードのうちでこういう条件のものを探してきて…という処理をRubyで書いていた。それではどうしてもコードが汚くなってしまう。XPathというXMLのQuery式を使えば綺麗にかける。たとえばこんな感じ
//nvidia_smi_log/gpu[product_name/text()='Tesla C2050']/temperature/gpu_temp
これは日本語で言い換えると、何個かある//nvidia_smi_log/gpuのうちで、その下のproduct_nameのtextがTesla C2050であるもの(gpu)の下の/temperature/gpu_tempを指している。途中の[ ]は述語と言うらしく、限定修飾の関係代名詞のようなもの。これをRubyで書いたらとても長ったらしいコードになってしまうが、XPathを使えばこんなに簡単に書ける。すばらしい。C#のLINQとかSQLとかもこういうふうに書くのかな。