diff options
Diffstat (limited to 'blocks/block-cpu')
| -rwxr-xr-x | blocks/block-cpu | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/blocks/block-cpu b/blocks/block-cpu new file mode 100755 index 0000000..3491608 --- /dev/null +++ b/blocks/block-cpu @@ -0,0 +1,23 @@ +#!/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}%" |
