2009年5月30日

何かを監視して screen のステータスラインにメッセージを表示する

プロセスとかハードディスク容量とかとにかく何かを監視して、メッセージを出してほしい場合があります。

screen のステータスラインに出すなら以下のようにします。

例えばハードディスクの容量を監視するなら、以下みたいなスクリプトを書いて、パーミッションを設定しておきます。

#!/bin/sh

capacity=`df $dir|awk 'NR==2{sub("%","",$5);print $5}'`

if [ $capacity -gt 80 ];then
    msg="disk is 80 over!!"

else
    msg=""
fi

echo $msg

で .screenrcに以下みたいに書きます。

backtick 0 2 2 /path/to/shell.sh
hardstatus alwayslastline "%?%{=b rw}%0`%{-} %?"

backtick は 以下みたいな感じです。

backtick id lifespan autorefresh command [args]

一番目のが 「id」 で hardstatus で 「%id`」で参照できます。この例の場合「id」に「0」を採番してるので「%0`」で参照できます。

「lifespan」、「autorefresh」とかで監視間隔を修正します。

hardstatus の「%?」はその間の参照が展開されたら表示するっていわゆる条件分岐です。

なのでこの例だと「%0`」の内容が空文字以外だったら表示されます。

よってこの例だと df の結果でハードディスクが80%以上利用されているとステータスラインに文字が表示されます。

スクリプトを工夫するといろいろできると思います。

blog comments powered by Disqus