load.sh 777 B

12345678910111213141516171819202122232425262728293031
  1. load_representation=(░ ▒ ▓ █)
  2. thresholds=(0 16.7 50 83.3 100)
  3. # Requires mpstat from the sysstat package.
  4. load() {
  5. nboxes=$(nproc)
  6. load=$(awk '{print $1}' /proc/loadavg)
  7. loads=$(mpstat -P ALL -u 5 1 | tail -$nboxes | awk '{print 100-$NF}' | sort -n -r)
  8. for L in $loads; do
  9. for level in $(seq 0 ${#load_representation[*]}); do
  10. test_str="$L >= ${thresholds[$level]} && $L <= ${thresholds[$(( level + 1 ))]}"
  11. if (( $(bc -l <<< "${test_str}") )); then
  12. printf "%s" "${load_representation[$level]}"
  13. break
  14. fi
  15. done
  16. done
  17. }
  18. load_file=/tmp/load_summary
  19. while true; do
  20. load > "$load_file"
  21. sleep 1
  22. done &
  23. show_load() {
  24. cat "$load_file"
  25. }
  26. register+=('show_load')