Subscribed unsubscribe Subscribe Subscribe

プロンプトでシステムの平均負荷を表示する

Zsh

http://d.hatena.ne.jp/sugyan/20090317/1237258555にコメントをいただいたので、変更してみた。
uptime コマンドから、システムの平均負荷状態を得ることができるらしい。

The uptime utility displays the current time, the length of time the system has been up, the number of users, and the load average of the system over the last 1, 5, and 15 minutes.

ということで.zshrcを以下のようにしてみた。
(※追記した。これはひどい)

precmd () {
  PROMPT=$'%{\e[36m%}%* ('$(uptime | awk '{ print $8 }')$') %%%{\e[m%} '
}
RPROMPT=$'%{\e[32m%}%/%{\e[m%}'

Perlでもよかったけど、なんとなくここはawkで。
現在の時間と、最近1分間での平均負荷を括弧で表示する。

追記

かなりの表記依存があってマズいので修正する。
上記のものだと起動後の経過時間によって表記が変わるらしく、1日を超えてたりするとスペースの数が変わってしまう。
正規表現使って解析してもいいんだけど、とりあえず別の方法で。たぶんMac専用。

precmd () {
  PROMPT=$'%{\e[36m%}%* ('$(sysctl -n vm.loadavg | perl -anpe '$_=$F[1]')$') %%%{\e[m%} '
}
RPROMPT=$'%{\e[32m%}%/%{\e[m%}'

Linuxだったら/proc/loadavg なんかを読むといいらしい。