diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-05-19 18:38:39 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-05-19 18:38:39 +0200 |
| commit | e8cf42f2f17151378574ee5b50f29904a1067bee (patch) | |
| tree | 86b4db80971ecf9818ad769bd8b7fa337d218731 /blocks/block-cpu | |
| parent | c3bfa44d1b6da88c184fc3312944cf47d1dfd7f2 (diff) | |
| download | bin-main.tar.gz bin-main.zip | |
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}%" |
