Screenに現在のメモリ使用率を表示させてみた
過去に掲題のエントリーをどこかで見かけた記憶があるのですが、失念してしまいやむなく自作しました。
まずは下記のようなメモリの使用率を出力するshellを用意します。
#!/bin/sh # echo `free | grep "buffers/cache" | awk '{print substr($3/($3+$4)*100,1,5)}'`'%' # echo `free | grep "buffers/cache" | awk '{printf "%3.1f", $3/($3+$4)*100}'`'%' echo `free | awk '/buffers\/cache/{printf "%3.1f", $3/($3+$4)*100}'`'%'
処理を簡単に説明します。
freeコマンドでメモリの状態を出力し、
$ free total used free shared buffers cached Mem: 2058796 1998692 60104 0 84788 1032096 -/+ buffers/cache: 881808 1176988 Swap: 1951740 3352 1948388
その結果から「buffers/cache:」のある行だけgrepして
# grep "buffers/cache" -/+ buffers/cache: 881808 1176988
grep結果をawkして許されるのは小学生までだよねー
3つめ(881808:OSとアプリケーションが使用しているメモリサイズ)と4つめ(1176988:空きメモリサイズ)からメモリの使用率を算出して、小数点二桁くらい一桁(printf便利!)に揃えて
# awk '{print substr($3/($3+$4)*100,1,5)} # awk '{printf "%3.1f", $3/($3+$4)*100}' awk '/buffers\/cache/{printf "%3.1f", $3/($3+$4)*100}'
最後に「%」をくっつけています
echo 上の処理の結果'%'
このshellを適当なところに置きます。
今回、homeディレクトリに.screenディレクトリを掘り、mem.shとして保存しました。
~/.screen/mem.sh
次に.screenrcファイルに下記のような一行を追加します。
backtick 0 2 2 ${HOME}/.screen/mem.sh
そして、hardstatusまたはcaptionに「%0`」を追加すると完了です。
hardstatus string "memory : %0`"
この0は backtick のひとつめの引数(id)に該当し、例えば「backtick 1 2 2 ${HOME}/.screen/mem.sh」とした場合は「%1`」とします。
以上で完成です。
参考にさせて頂いたエントリー
screenのcaptionに東京電力の電力使用状況を表示するようにしてみた - ケーズメモ