この日記の方針。
- この日記では、超初心者向けの内容は取り扱っておりません。モジュールの利用など、実践的な内容が中心となります。
- ここに貼られるソースは、基本的にそのままでは動かないものばかりです。各自の責任でご利用ください。
- 内容が間違っていることがあります。その際はご指摘いただけるとありがたいです。「検証してみたら違う結果が出た」などの報告も大歓迎です。
- perl -e die
2009-02-02 (Mon)CPU情報の取得など
■ [Sys] CPUの情報とかロードアベレージとか

/usr/bin/uptime の実行結果を正規表現で分解するのとか作ったことあるけど、そんなことしなくて済むモジュールはもちろん存在する。Windowsでもちゃんと動く。
Sys::Info だけインストールすればOK。WindowsのActivePerlなら、ppm install Sys::Infoで一発。
ソースコード
#!/usr/bin/perl use strict; use Sys::Info; use Sys::Info::Constants qw(:device_cpu); my $info = Sys::Info->new; my $cpu = $info->device('CPU'); print 'CPU: ', scalar($cpu->identify), "\n"; print 'CPU speed: ', $cpu->speed, 'MHz', "\n"; print 'OS: ', $info->os->name, "\n"; ### perldoc Sys::Info::Device::CPU # Using this method under *Windows* is not recommended since, the "WMI" # interface will possibly take at least 2 seconds to complete the request. print 'CPU Load: ', $cpu->load(DCPU_LOAD_LAST_01), "\n";
実行結果
CPU: Intel(R) Pentium(R) M processor 1.60GHz
CPU Load: 0.02
注意して欲しいのは、
Using this method under *Windows* is not recommended since, the "WMI"
interface will possibly take at least 2 seconds to complete the request.
Windowsだと無駄に遅いということ。最低でも2秒かかる。
まあ、Windowsで使うことなんてないだろうけど。
何に使えるだろう。サーバ監視用とかに使えるかも。
あれ。
FreeBSDだとうまく行かないみたい?
CPU:
CPU Load: 0
Sys::Info::Driver::LinuxとSys::Info::Driver::Windowsはあるのに、FreeBSDだとUnknownになってしまう?みたい?
コメント
トラックバック - http://perl.g.hatena.ne.jp/Cress/20090202