#!/bin/sh # CPU usage from /proc/stat deltas. Cheaper than `top -bn1`. STATE=/tmp/block-cpu.state read -r _ u n s i io irq sirq st _ < /proc/stat total=$((u+n+s+i+io+irq+sirq+st)) idle=$((i+io)) if [ -r "$STATE" ]; then read -r prev_total prev_idle < "$STATE" dt=$((total - prev_total)) di=$((idle - prev_idle)) if [ "$dt" -gt 0 ]; then usage=$(( ( (dt - di) * 100 ) / dt )) else usage=0 fi else usage=0 fi echo "$total $idle" > "$STATE" echo "${usage}%"