LoginSignup
9
10

More than 5 years have passed since last update.

tmux の Status-Line をカスタマイズする

Last updated at Posted at 2012-12-26

作業場所への移動

Terminal

cd /usr/local/bin

起動時間を取得するスクリプトの作成

pc-running-time

#!/bin/sh
uptime | sed -e 's/.* up *\(.*\)/\1/' -e 's/\(.*\),.* user.*/\1/' | awk -F, '{print $1 $2}' | tr -s ' '

ロードアベレージを取得するスクリプトの作成

loadaverage

#!/bin/sh
uptime | awk -F\  '{print $(NF - 2),$(NF - 1),$NF}'

メモリ使用率を取得するスクリプトの作成

used-mem

#!/bin/sh

## debug mode
#DEBUG="yes"
if [ "$DEBUG" = "yes" ]; then
    set -x
fi

## vm_stat コマンドのチェック
if ! type vm_stat > /dev/null 2>&1; then
    exit 1
fi

#
# メモリ使用率(%)を求める
#   精度は小数点第1位までとする
#
calculate_used_mem() {
    # vm_stat
    #  page size of 4096 bytes
    VM_STAT=$(vm_stat)
    PAGES_FREE=$(echo "$VM_STAT" | awk '/Pages free/ {print $3}' | tr -d '.')
    PAGES_ACTIVE=$(echo "$VM_STAT" | awk '/Pages active/ {print $3}' | tr -d '.')
    PAGES_INACTIVE=$(echo "$VM_STAT" | awk '/Pages inactive/ {print $3}' | tr -d '.')
    PAGES_SPECULATIVE=$(echo "$VM_STAT" | awk '/Pages speculative/ {print $3}' | tr -d '.')
    PAGES_WIRED=$(echo "$VM_STAT" | awk '/Pages wired down/ {print $4}' | tr -d '.')

    # 空きメモリ
    FREE_MEM=$(($PAGES_FREE + $PAGES_SPECULATIVE))

    # 使用中メモリ
    USED_MEM=$(($PAGES_ACTIVE + $PAGES_INACTIVE + $PAGES_WIRED))

    # 合計
    TOTAL_MEM=$(($FREE_MEM + $USED_MEM))


    # 使用中メモリ(%)
    #  小数点第1位まで求めて後から小数点文字(ドット)を挿入
    USED_MEM_PERCENT=$(echo "$(($USED_MEM * 1000 / $TOTAL_MEM))" | sed -e 's/\(.*\)\([0-9]\)/\1.\2/' -e 's/^\./0./')
    echo "${USED_MEM_PERCENT}"

    # RET
    return 0
}

# Debug
debug() {
    if [ "$DEBUG" = "yes" ]; then
        echo "PAGES_FREE: $PAGES_FREE pages"
        echo "PAGES_FREE: $(($PAGES_FREE * 4096 / 1024 / 1024 )) MB"
        echo "PAGES_ACTIVE: $PAGES_ACTIVE pages"
        echo "PAGES_ACTIVE: $(($PAGES_ACTIVE * 4096 / 1024 / 1024)) MB"
        echo "PAGES_INACTIVE: $PAGES_INACTIVE pages"
        echo "PAGES_INACTIVE: $(($PAGES_INACTIVE * 4096 / 1024 / 1024)) MB"
        echo "PAGES_SPECULATIVE: $PAGES_SPECULATIVE pages"
        echo "PAGES_SPECULATIVE: $(($PAGES_SPECULATIVE * 4096 / 1024 / 1024 )) MB"
        echo "PAGES_WIRED: $PAGES_WIRED pages"
        echo "PAGES_WIRED: $(($PAGES_WIRED * 4096 / 1024 / 1024)) MB"
        echo "FREE_MEM: $FREE_MEM pages"
        echo "FREE_MEM: $(($FREE_MEM * 4096 / 1024 / 1024)) MB"
        echo "USED_MEM: $USED_MEM pages"
        echo "USED_MEM: $(($USED_MEM * 4096 / 1024 / 1024)) MB"
        echo "TOTAL_MEM: $TOTAL_MEM pages"
        echo "TOTAL_MEM: $(($TOTAL_MEM * 4096 / 1024 / 1024)) MB"
        echo "---------------"
        # 搭載メモリ(理論値): 8GBの場合
        echo "TOTAL_MEM: $((8 * 1024)) MB (Theoretical value)"
        echo "---------------"
        echo "USED_MEM: $(($USED_MEM * 1000 / $TOTAL_MEM)) %"
    fi
}

RET=0
## メイン処理 -----
calculate_used_mem
RET=$?

## デバッグ -----
#DEBUG=yes debug

## exit
exit $RET

作成したスクリプトに実行権限を渡す

Terminal

chmod u+x used-mem pc-running-time loadaverage

設定ファイルの編集

~/.tmux.conf

# ステータスライン - Right
set -g status-right '#[bg=yellow,bold] #(echo $LANG) #[bg=blue] up #(pc-running-time) #[bg=green] (#(loadaverage)) Mem #(used-mem)%% #[bg=red,bold] %y/%m/%d(%a)%H:%M:%S '

# Rightの表示領域最大長
set -g status-right-length 90

# 文字色と背景色
set -g status-fg white
set -g status-bg black

参考URL

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10