とりあえずの倉庫
2012年6月15日金曜日
2012年4月22日日曜日
Rainmeter, MyStorage skin v3.1, Update, Multi agenda
なんか最近,このブログのアクセス数が跳ね上がっている.どこかで晒されたのかな.
まあいいや.前回のエントリーでスキンを公開したわけだけど,その中のAgendaをアップデートした.
具体的には,複数のGoogleカレンダーの予定を表示できるようにした.スキンはこちら.
こんな感じ.マリみての新刊が発売されるんですね.買わないと.それはともかく,設定方法などの説明をする.
構造としては,Calendarと同じように,Luaスクリプトでゴリゴリ整形,配列に突っ込んでいる.スクリプトのベースは,前のバージョンのAgendaである.無茶しやがって・・・という声が聞こえてきそうなくらい,スパゲッティなスクリプトになっている.F.S.M.まんせー.
さて,まずVariable.incのAgendaセッション
個人情報に抵触するところは黒塗りにしてある.まず,Googleカレンダーにアクセスし,URLを知りたいカレンダーの設定を開く.
設定のうち,「限定公開」のxmlをクリック.ポップアップが出るので,
赤枠で囲まれた部分をコピーする.このURLをVariable.incのAgenda_Url1~3のどこかにペーストすればいい.
Variable.incのMaxResultsは,カレンダー毎に最大何件のイベントを取得するかの設定.取得したものが全て表示されるわけではないので注意が必要である.
これは,Agenda.iniに設定されている[AgendaX] Meterの数との関係で,適当に設定すればいいと思う.
(Agenda.iniには,デフォルトで[Agenda1]から[Agenda18]まである.好みに応じて増減させたらいい.)
Color1~3は,カレンダーの色.
(ここまで書いて気が付いたけど,これはAgenda.Colorとかにしておかないと,今後他の設定とかぶるなぁ.Agenda_Urlも他の変数と命名規則が違う.この辺は次回のアップデートで修正する.)
Agenda_Url,Colorともに,表示したいカレンダーの数に応じて,適宜増減させること.
続いてAgenda\Script.luaを少しいじる必要がある.Script.luaを開くと,1行目から,
次のCalNumとCalRowは環境に合わせて変える必要がある.CalNumは表示したいカレンダーの数(=Agenda_Urlの数),CalRowはAgendaスキンの行数(=Agenda.iniの[AgendaX]の数)となっている.先述のとおり,これは各人の設定や改造によって増減するものなので,各人の環境に合わせて,こちらも変える.
(そのうち,Variables.incから読み取るようにすると思う.)
まあいいや.前回のエントリーでスキンを公開したわけだけど,その中のAgendaをアップデートした.
具体的には,複数のGoogleカレンダーの予定を表示できるようにした.スキンはこちら.
こんな感じ.マリみての新刊が発売されるんですね.買わないと.それはともかく,設定方法などの説明をする.
構造としては,Calendarと同じように,Luaスクリプトでゴリゴリ整形,配列に突っ込んでいる.スクリプトのベースは,前のバージョンのAgendaである.無茶しやがって・・・という声が聞こえてきそうなくらい,スパゲッティなスクリプトになっている.F.S.M.まんせー.
さて,まずVariable.incのAgendaセッション
Agenda_Url1=https://www.google.com/calendar/feeds/japanese__ja%40holiday.calendar.google.com/public/basicUrl1~3が表示するGoogleカレンダーのURL.デフォルトでUrl1には「日本の祝日」カレンダーを入れてある.このURLは,Googleカレンダーから知ることができる.必要ないと思うが,一応書いておこう.
Agenda_Url2=
Agenda_Url3=
MaxResults=12
Color1=200,0,0,160
Color2=128,192,255,160
Color3=192,255,128,160
個人情報に抵触するところは黒塗りにしてある.まず,Googleカレンダーにアクセスし,URLを知りたいカレンダーの設定を開く.
設定のうち,「限定公開」のxmlをクリック.ポップアップが出るので,
赤枠で囲まれた部分をコピーする.このURLをVariable.incのAgenda_Url1~3のどこかにペーストすればいい.
Variable.incのMaxResultsは,カレンダー毎に最大何件のイベントを取得するかの設定.取得したものが全て表示されるわけではないので注意が必要である.
これは,Agenda.iniに設定されている[AgendaX] Meterの数との関係で,適当に設定すればいいと思う.
(Agenda.iniには,デフォルトで[Agenda1]から[Agenda18]まである.好みに応じて増減させたらいい.)
Color1~3は,カレンダーの色.
(ここまで書いて気が付いたけど,これはAgenda.Colorとかにしておかないと,今後他の設定とかぶるなぁ.Agenda_Urlも他の変数と命名規則が違う.この辺は次回のアップデートで修正する.)
Agenda_Url,Colorともに,表示したいカレンダーの数に応じて,適宜増減させること.
続いてAgenda\Script.luaを少しいじる必要がある.Script.luaを開くと,1行目から,
Properties={となっている. DayLabels,HeaderFormatは,いずれもヘッダー部分に表示される今日の日付のフォーマットに関係する.DayLabelsをSun|Mon・・・とすれば,ヘッダーの曜日表示が英語になるということ.
DayLabels='日|月|火|水|木|金|土';
HeaderFormat='year年month月day日(wd)';
CalNum=3;
CalRow=18;
}
次のCalNumとCalRowは環境に合わせて変える必要がある.CalNumは表示したいカレンダーの数(=Agenda_Urlの数),CalRowはAgendaスキンの行数(=Agenda.iniの[AgendaX]の数)となっている.先述のとおり,これは各人の設定や改造によって増減するものなので,各人の環境に合わせて,こちらも変える.
(そのうち,Variables.incから読み取るようにすると思う.)
2012年4月14日土曜日
Rainmeter, Calendar, Schedule ( Agenda) with Google Calendar by Lua Script, Gmail, "MyStorage" Skin Version Up
20120422 以下は古い記事.V3.1にアップデートした.
これまで,Rainmeterでいくつかのガジェットを日本人がちょこっと幸せに使える改造を紹介してきた.今回は,もう少し幸せになるために,Luaスクリプトを組んでみた,という話.私謹製スキンのアップデート.
こんなものが入っている↓
Agenda, Analog Clock, Calendar, CPU Usage, Gmail, GPU Usage, Memory Usage, Network Traffic, Thermometer, Top Process(CPU, Memory), Weather Forecast
今回のアップデートで追加したものの解説↓.
1.カレンダーの追加
以前,LuaCalendarを取り上げて,Googleカレンダーから日本の祝日を取得,表示するというのを書いた.でも,データの読み込みタイミングなんかが課題として残った.あと,私はカレンダーを2か月表示しているので,1か月表示だけのLuaCalendarだと少し物足りない.ということで,Luaスクリプトを使って,カレンダーを作ってみた.LuaCalendarを参考にしつつ,全く違うものになっている.このスクリプトでは,ほっといても祝日を再読み込みしてくれるので,LuaCalendarよりちょこっと便利.カレンダーは2か月表示.
Variables.incの
2. 予定リスト
GnometerのGcalみたいなもの.Variables.incファイルの
https://www.google.com/calendar/feeds/【ユーザ名】%40gmail.com/【アドレス】/basic
赤字部分を入れる.
3.Gmail
これもGnometerのGmailみたいなもの.Variables.incファイルの
4.その他
これまで,Rainmeterでいくつかのガジェットを日本人がちょこっと幸せに使える改造を紹介してきた.今回は,もう少し幸せになるために,Luaスクリプトを組んでみた,という話.私謹製スキンのアップデート.
こんなものが入っている↓
Agenda, Analog Clock, Calendar, CPU Usage, Gmail, GPU Usage, Memory Usage, Network Traffic, Thermometer, Top Process(CPU, Memory), Weather Forecast
今回のアップデートで追加したものの解説↓.
1.カレンダーの追加
以前,LuaCalendarを取り上げて,Googleカレンダーから日本の祝日を取得,表示するというのを書いた.でも,データの読み込みタイミングなんかが課題として残った.あと,私はカレンダーを2か月表示しているので,1か月表示だけのLuaCalendarだと少し物足りない.ということで,Luaスクリプトを使って,カレンダーを作ってみた.LuaCalendarを参考にしつつ,全く違うものになっている.このスクリプトでは,ほっといても祝日を再読み込みしてくれるので,LuaCalendarよりちょこっと便利.カレンダーは2か月表示.
Variables.incの
;---Calendar Values---に,取得する祝日の開始年を入れる.とりあえず,Variables.incでは,2012年1月1日から取得するように設定してある.
StartYear=
2. 予定リスト
GnometerのGcalみたいなもの.Variables.incファイルの
;---Agenda---に,表示したいカレンダーの限定公開URLのxmlアドレス
GcalURL=
https://www.google.com/calendar/feeds/【ユーザ名】%40gmail.com/【アドレス】/basic
赤字部分を入れる.
3.Gmail
これもGnometerのGmailみたいなもの.Variables.incファイルの
;---Gmail---にGmailのユーザ名(@の前)とパスワードを入れる.メールにカーソルを合わせると,ツールチップでメール文のサマリーを表示する.
User=
Pass=
4.その他
- アナログ時計を追加.文字盤を無理やり作ってみたり.
- 言語ファイルの追加.Lang\ja_JP.incを参考に,他の言語も作成可能.ファイルのコードとか変えなくちゃいけないので,多少面倒だと思うけれども.
- グラフ位置等を修正
2012年4月8日日曜日
Rainmeter, Google Weather API, Forecast
RainmeterでGoogle Weather API(非公式)を叩いて,天気予報を表示させるガジェットを作った.これは,MacでPHPとGeektoolからGoogle Weather APIを利用していたことを思い出したので,せっかくならRainmeterでもやってみようと思ったわけだ.
どうも,Rainmeterの天気予報スキンの多くは,海外のサイトを利用している.なので,表示が英語になったりして,日本人の私には直観的でない.Google Weather APIは日本語出力をしてくれるので,その辺が楽.
なんだかんだいうが,私がYahooよりGoogleが好きだ,というのが一番の理由だったりもする.どうせ個人が好き勝手に自分のデスクトップを使いやすいようにしているだけなので,どこのサービスを使ってもいいじゃないか.
せっかくなので先日公開したうちのスキンをアップデートして,天気予報を同梱した.
↓こんなことができる.アイコンは,大嫌いなYahoo.com Weatherから拝借した.それをこういった形で公開することには,いろいろ問題もあると思うが,このスキンはあくまで私が個人的に利用することが前提なので,まあ良しとしていただきたい(誰に?).
設定方法を書いておく. Weather.iniの[Variables]で,
これだけで,現在から3日後までの天気を取得できる.現在の天気には,ポップアップで湿度と風向,今日の天気予報が表示される.
どうも,Rainmeterの天気予報スキンの多くは,海外のサイトを利用している.なので,表示が英語になったりして,日本人の私には直観的でない.Google Weather APIは日本語出力をしてくれるので,その辺が楽.
なんだかんだいうが,私がYahooよりGoogleが好きだ,というのが一番の理由だったりもする.どうせ個人が好き勝手に自分のデスクトップを使いやすいようにしているだけなので,どこのサービスを使ってもいいじゃないか.
せっかくなので先日公開したうちのスキンをアップデートして,天気予報を同梱した.
↓こんなことができる.アイコンは,大嫌いなYahoo.com Weatherから拝借した.それをこういった形で公開することには,いろいろ問題もあると思うが,このスキンはあくまで私が個人的に利用することが前提なので,まあ良しとしていただきたい(誰に?).
設定方法を書いておく. Weather.iniの[Variables]で,
[Variables]赤字の部分を適宜変えるだけ.その場所がAPIで取得できるかどうかは,
@include=#ROOTCONFIGPATH#Variables.inc
City="Shibuya"
City_Sub="Shibuya, Tokyo":"東京都渋谷区"
http://www.google.com/ig/api?weather=Shibuya&hl=jaこの部分を変えて,ブラウザでアクセスしてみればわかる.
これだけで,現在から3日後までの天気を取得できる.現在の天気には,ポップアップで湿度と風向,今日の天気予報が表示される.
2012年4月6日金曜日
Rainmeter, CPU Usage, GPU Usage, Memory, Network, Top Process, Thermometer
今日は久しぶりにRainmeter.プラグインを使って,いろいろな情報を取得できるよって話.
作ったスキンはこんな感じ.↓
展開先(マイドキュメントのRainmeter\Skins\MyStrage)をみるとわかるが,プラグインを含む他人様のスキンを同梱してしまっている.が,このブログ自体が個人の備忘録なので気にしてはいけない.
で,このスキンを動かすための説明をちょっとだけ書いておく.
さすがに,Rainmeter単体でここまでの情報を取得することはできないので,他のユーティリティと連携させることになる.
GPU情報は,MSI Afterburnerの値を取得している.これに,このフォーラム記事中にあるMSIAfterburner.dll(32bit,64bitのいずれか)をダウンロードして,RainmeterのPluginsフォルダに突っ込む.
温度の部分は,SpeedFanの値を取得している.値を取得するプラグインは,Rainmeterに標準で含まれている.インストールすればわかるが,SpeedFanを起動すると,中央右部分に各部の温度が表示される.この表示される部分の順番は,個人の環境によって異なるようなので,確認すること.
作ったスキンはこんな感じ.↓
展開先(マイドキュメントのRainmeter\Skins\MyStrage)をみるとわかるが,プラグインを含む他人様のスキンを同梱してしまっている.が,このブログ自体が個人の備忘録なので気にしてはいけない.
で,このスキンを動かすための説明をちょっとだけ書いておく.
さすがに,Rainmeter単体でここまでの情報を取得することはできないので,他のユーティリティと連携させることになる.
GPU情報は,MSI Afterburnerの値を取得している.これに,このフォーラム記事中にあるMSIAfterburner.dll(32bit,64bitのいずれか)をダウンロードして,RainmeterのPluginsフォルダに突っ込む.
温度の部分は,SpeedFanの値を取得している.値を取得するプラグインは,Rainmeterに標準で含まれている.インストールすればわかるが,SpeedFanを起動すると,中央右部分に各部の温度が表示される.この表示される部分の順番は,個人の環境によって異なるようなので,確認すること.
上の図で中段左側に0RPMが並んでいるのは,本来ならば各部のファンの回転数が表示される.私のパソコンは自作で,CPUファンやケースファンをつけていないためだ.↓こんなものつけている.Core i5 2400sを使っているが,十分冷える.
話を戻す.どうやって確認するかというと,Configureをクリックして設定画面を開く.Temperaturesタブに表示されている順番にRainmeterが値を拾ってくるようだ.
↑私の環境では,0=GPU,1=System(チップセット),9=Core0となっている.Thermometer.ini中の値を適宜変更してほしい.たとえば,
SpeedFanでは1番目のコアはCore0と表示されている.0が1番だと普通の人はあまりなじみないだろうと思い,Rainmeterでは0番コアをCore1と表示,以降,3番コア(SpeedFan上のCore4)をCore4としてあるにしてある.この辺は,表示上の好みの話なので,個人の好きにすればいいと思う.
Intel i7環境では,Coreが8まで表示されると思う.その時は,適宜MeasureとMeterを増やすことになる.2コア環境では逆にコメントアウトするなどして減らすこと.
※追記
GPUとChip(System)の温度表示が整数値なっている.ファイルを更新するのも面倒なので,ここに修正方法を書いておく.小数点を表示するには,それぞれのMeterに,NumofDecimals=1を追記する必要がある. ↓の赤字部分を追加.
[Measure.SpeedFan.Temp.GPU]赤字の部分が該当箇所.「~Temp.GPU」のところと同様に,System,Core1・・・と変更すること.
Measure=Plugin
Plugin=Plugins\SpeedFanPlugin.dll
SpeedFanType=TEMPERATURE
SpeedFanNumber=0
SpeedFanでは1番目のコアはCore0と表示されている.0が1番だと普通の人はあまりなじみないだろうと思い,Rainmeterでは0番コアをCore1と表示,以降,3番コア(SpeedFan上のCore4)をCore4としてあるにしてある.この辺は,表示上の好みの話なので,個人の好きにすればいいと思う.
Intel i7環境では,Coreが8まで表示されると思う.その時は,適宜MeasureとMeterを増やすことになる.2コア環境では逆にコメントアウトするなどして減らすこと.
※追記
GPUとChip(System)の温度表示が整数値なっている.ファイルを更新するのも面倒なので,ここに修正方法を書いておく.小数点を表示するには,それぞれのMeterに,NumofDecimals=1を追記する必要がある. ↓の赤字部分を追加.
[Temperature.Text.GPU]最後にCPU top5,メモリ top5はそれぞれのプロセス上5位を表示している.これも,Rainmeterの標準装備では作れいないので,ここらへんからプラグインを拾ってきて,上述のMSIのやつと同様に,プラグインをプラグインフォルダにつっこむ.ただ,このプラグイン,64bit環境では,まだバグがあるっぽい.私の環境では問題なく動いているので,まあ良しとする.
Meter=STRING
X=5
Y=14r
MeasureName=Measure.SpeedFan.Temp.GPU
StringStyle=NORMAL
StringAlign=LEFT
FontColor=#Font.Color.White#
FontSize=#Font.Height#
FontFace=#Font.Name#
AntiAlias=1
AntiAlias=1(ダブっていたので,削除して)
NumofDecimals=1
Text="GPU %1 °C"
[Temperature.Text.System]
Meter=STRING
X=97
Y=0r
MeasureName=Measure.SpeedFan.Temp.System
StringStyle=NORMAL
StringAlign=LEFT
FontColor=#Font.Color.White#
FontSize=#Font.Height#
FontFace=#Font.Name#
AntiAlias=1
NumofDecimals=1
Text="Chip %1 °C"
2012年3月25日日曜日
Mac, Geektool, Multi Ascii Graph
前回のエントリーで,Geektoolでアスキーグラフを使って無理矢理グラフを描く話をした.今日はその発展型の話.これは,以前のエントリー,Geektoolでtopとawkを使ったCPU,メモリ使用率表示スクリプトとも関係する.今日のスクリプトはこちら.そして,うまいこと設置できれば,こんな感じになる↓
これは,cpulog.shとmemlog.shでそれぞれCPUとメモリ使用率のログを出力し,それぞれのグラフを重ねて配置,その上にpsで各使用率上位5位のリストを表示しているという3層構造になっている.
以前のエントリーでは,topを叩いてメモリ使用量を取得していた.それでもいいんだけど,桁が丸められているので,ちょっと扱いにくい.そこで今回のスクリプト(memlog.sh)では,vm_statコマンドでメモリの値を取得してやるように変更した.もっとも,vm_statは仮想メモリの値を取得するコマンドなので,物理メモリの値を示しているわけではない点には留意が必要である.それと,せっかくだから色もつけてみる.
#Macはメモリ管理がよくわからん.vm_statのfree値が極端に少ない.すこしググってみたところ,こんな記事を見つけた.どうも,いわゆるfree値に該当するのはPages freeとPages speculativeの合計値らしい.これ以上調べたり,考えるのも面倒なので,とりあえずそういうことにする.
ログファイルにはfree(free+speculative), inactive, active, wiredの使用率(百分率)を出力する.母数となる合計値の算出方法が正しいかどうかわからないが,とりあえずそれっぽく見えるので,そのままにしている.
グラフの仕様を変更した.出力されたログファイルのカラム(スペース区切り)毎に色の異なる折れ線グラフを描くようにした.カラムの最大数はとりあえず8つまで対応する.色の順番は,graph.phpの$color配列変数のキーを好きな順番にすればいい.コマンド実行時に第2引数としてnocolorをつけると,色指定なしのグラフが出力される.フォントの設定などは前回のエントリーを参考にしてほしい.
これは,cpulog.shとmemlog.shでそれぞれCPUとメモリ使用率のログを出力し,それぞれのグラフを重ねて配置,その上にpsで各使用率上位5位のリストを表示しているという3層構造になっている.
ログ出力(1秒更新)
sh /PATH/cpuinfo.sh
sh /PATH/memlog.sh
グラフ(2秒更新)
php /PATH/graph.php /tmp/cpu.log nocolor
php /PATH/graph.php /tmp/mem.log
リスト(1秒更新)
ps -c -U hogehoge -o command,%cpu -r |head -n 6赤文字の所は例のごとく各々の環境に合わせる.面倒くさいので,今日はスクリプトの解説をしない.適宜,該当するスクリプトを読んでほしい.そんなに難しい構造にはなっていない.
ps -c -U hogehoge -o command,%mem,rss -m |head -n 6
以前のエントリーでは,topを叩いてメモリ使用量を取得していた.それでもいいんだけど,桁が丸められているので,ちょっと扱いにくい.そこで今回のスクリプト(memlog.sh)では,vm_statコマンドでメモリの値を取得してやるように変更した.もっとも,vm_statは仮想メモリの値を取得するコマンドなので,物理メモリの値を示しているわけではない点には留意が必要である.それと,せっかくだから色もつけてみる.
#Macはメモリ管理がよくわからん.vm_statのfree値が極端に少ない.すこしググってみたところ,こんな記事を見つけた.どうも,いわゆるfree値に該当するのはPages freeとPages speculativeの合計値らしい.これ以上調べたり,考えるのも面倒なので,とりあえずそういうことにする.
ログファイルにはfree(free+speculative), inactive, active, wiredの使用率(百分率)を出力する.母数となる合計値の算出方法が正しいかどうかわからないが,とりあえずそれっぽく見えるので,そのままにしている.
グラフの仕様を変更した.出力されたログファイルのカラム(スペース区切り)毎に色の異なる折れ線グラフを描くようにした.カラムの最大数はとりあえず8つまで対応する.色の順番は,graph.phpの$color配列変数のキーを好きな順番にすればいい.コマンド実行時に第2引数としてnocolorをつけると,色指定なしのグラフが出力される.フォントの設定などは前回のエントリーを参考にしてほしい.
2012年3月21日水曜日
Mac, Geektool, CPU Usage, Ascii Graph
今日はGeektoolでCPU使用率を「無理やり」グラフ表現する話.
Geektoolはグラフの表示ができない.CPU使用率をグラフ表現しようとした場合,一般的には2つの方法が考えられる.
今日は,この1,2以外の方法を模索した結果を書く.つまり,
無茶しやがって・・・というAAが飛んできそうだが,gnuplotよりは平易な設定でできると思う.CPU負荷はどうなのかわからない.それと,2の方法よりも画像を出力しない分,HDDへの書き込みは少ないが,この方法でもHDDへの書き込みが頻繁(geektoolで指定した秒数毎)に発生する.これは,その秒毎にCPU使用率をファイルへ保存するためだ.
もっとも,この点は,CPU使用率のログファイルの書き込み先をRAM Diskに移したtmpフォルダなどに指定してやれば,ほぼクリアだろう.各人の環境によるということだ.
cpulog.sh
このシェルスクリプトでやっていることは,呼び出されるたびにtopコマンドでcpu使用率を取得して,最新の300件を保存,その後にphpスクリプトの呼び出しである.この300を好きな数字に変更すれば,ログはいくらでも取れる.
graph.php
続いて,Geektoolの設定だが,shellのコマンドで,
それから,フォント指定をする.もちろん,フォント種は等幅フォントであればなんでもかまわない.重要なのはフォントサイズだ.Geektoolでは,最小9までしかフォントサイズリストに表示されないが,それよりも小さいサイズも指定できる.直接数字を入力すればいい.2以上がよろしいのではないかと.
こうして,できたのが,↓
いうまでもないが,利用する際は自己責任で.
Geektoolはグラフの表示ができない.CPU使用率をグラフ表現しようとした場合,一般的には2つの方法が考えられる.
1.Geektoolでの表示はあきらめて,ほかのユーティリティを使う.例えばXRGとか.1については,ググればいくらでも出てくるので,面白くない.ということで,なんとかGeektoolで表示できないものかと考えた.2については,gnuplotというグラフ描画ユーティリティを使った方法を試した.ただし,この方法については,gnuplotのインストールとコマンドの習得,画像作成時のCPUとHDDへの負荷が若干気になるところだ.とはいえ,面白い結果が得られた(とりあえずうまいこと動いた)ので,後日改めて書き残そうと思う.
2.ほかのユーティリティで画像を保存して,Geektoolのimageで表示する.
今日は,この1,2以外の方法を模索した結果を書く.つまり,
3.テキストでグラフを描くである.いつものように,こことここにスクリプトを置いておく.基本的には,シェルスクリプトと,私の一番得意な言語PHPでできている.
無茶しやがって・・・というAAが飛んできそうだが,gnuplotよりは平易な設定でできると思う.CPU負荷はどうなのかわからない.それと,2の方法よりも画像を出力しない分,HDDへの書き込みは少ないが,この方法でもHDDへの書き込みが頻繁(geektoolで指定した秒数毎)に発生する.これは,その秒毎にCPU使用率をファイルへ保存するためだ.
もっとも,この点は,CPU使用率のログファイルの書き込み先をRAM Diskに移したtmpフォルダなどに指定してやれば,ほぼクリアだろう.各人の環境によるということだ.
cpulog.sh
#!/usr/bin/sh赤字のところは,例の如く,それぞれの環境に合わせて書き換える必要がある.
if [ "`wc -l /tmp/cpu.log | awk '{print $1}'`" -gt 300 ]; then
cat /tmp/cpu.log | tail -300 > /tmp/cpu.log.swp
mv /tmp/cpu.log.swp /tmp/cpu.log
fi
top -R -F -u -l2 | head -4 | tail -1 | sed -E -e "s/CPU usage: (.*)% user.*/\1/" >> /tmp/cpu.log
#php ascii graph
php /PATH/graph.php /tmp/cpu.log
このシェルスクリプトでやっていることは,呼び出されるたびにtopコマンドでcpu使用率を取得して,最新の300件を保存,その後にphpスクリプトの呼び出しである.この300を好きな数字に変更すれば,ログはいくらでも取れる.
graph.php
#!/usr/bin/phpTicsは,グラフのメモリを指定している.arrayが表示する目盛りになる.
<?php
$str = "";
function Tics($i){
$tics=array(0,20,40,60,80,100);
if(in_array($i,$tics)){
$str ="-";
}else{
$str =" ";
}
return $str;
}
if($argv[1] && @file_exists($argv[1])){引数で指定したファイルを開いて,配列変数$fに格納
$f = file($argv[1]);
for($i=100;$i>0;$i--){
$str.=Tics($i);
for($j=0;$j<count($f);$j++){
if($f[$j]>$i){
$str.="#";
}else{
$str.=" ";
}
}
$str.=Tics($i);
$str.="\n";
}
}else{
$str ="target was not found\n";
}
echo $str;
?>これで,グラフが描ける.
続いて,Geektoolの設定だが,shellのコマンドで,
sh /PATH/cpulog.shを指定する.PATHは例の如く,環境に従うべし.refreshを適当な秒数に設定するのを忘れないように.ちなみに,私の環境では1秒になっている.
それから,フォント指定をする.もちろん,フォント種は等幅フォントであればなんでもかまわない.重要なのはフォントサイズだ.Geektoolでは,最小9までしかフォントサイズリストに表示されないが,それよりも小さいサイズも指定できる.直接数字を入力すればいい.2以上がよろしいのではないかと.
こうして,できたのが,↓
いうまでもないが,利用する際は自己責任で.
登録:
投稿 (Atom)