In August, I did a post on a pretty simple bash cpu meter. This one is still Intel-only, but is records the range of frequencies used during a report.
#!/bin/bash COLWID=17 MAXTURBO=4200 function find_lines { local i=0 local j=0 while read line; do if [[ $line =~ cpu\ MHz ]]; then cpu[i]=$j ((i++)) fi ((j++)) done < /proc/cpuinfo } function get_mhz() { mhz=() local cpulines=() local line hunks m L i c for i in `seq 1 15`; do c=0; readarray cpulines < /proc/cpuinfo for L in "${cpu[@]}"; do line="${cpulines[$L]}" hunks=($line) m=${hunks[3]} mhz[c]+="${m%.*} " ((c++)) done sleep 0.1s done } # main find_lines while [[ 1 = 1 ]]; do COLS=`tput cols` mhz=() get_mhz cpunum=0 for A in ${cpu[@]}; do lowest=0 highest=0 for H in ${mhz[$cpunum]}; do (( $H > $highest)) && highest=$H (( $lowest == 0 )) && lowest=$H (( $H < $lowest )) && lowest=$H done outline="" bars=$(( ($lowest * ($COLS-$COLWID) )/$MAXTURBO)) for (( L=1; L<=$bars; L++ )); do outline=$outline"-" done bars=$(( (((1+$highest)-$lowest) * ($COLS-$COLWID))/$MAXTURBO)) for (( L=1; L<=$bars; L++ )); do outline=$outline"=" done d=$(($cpunum+9900)) echo "${d##99} $lowest-$highest $outline" ((cpunum++)) done echo "" sleep 0.1 done #
4 responses to “Updated Bash CPU Meter”
how do you run this script?
I tried it and getting this response in cmd line:
# ./cpuMeter.bash
00 2394-2394 ——————————————————————————-
01 2394-2394 ——————————————————————————-
02 2394-2394 ——————————————————————————-
03 2394-2394 ——————————————————————————-
00 2394-2394 ——————————————————————————-
01 2394-2394 ——————————————————————————-
02 2394-2394 ——————————————————————————-
03 2394-2394 ——————————————————————————-
00 2394-2394 ——————————————————————————-
01 2394-2394 ——————————————————————————-
02 2394-2394 ——————————————————————————-
03 2394-2394 ——————————————————————————-
That is the graph.
Your CPU is not using a SpeedStep or variable clock speed, it appears fixed to 2.394 GHz.
sh cpu_meter.sh
cpu_meter.sh: 4: cpu_meter.sh: function: not found
cpu_meter.sh: 5: local: not in a function
When you type ‘sh’, bash might start up in sh compatibility mode, please try ‘bash cpu_meter.sh’ or ‘bash – x cpu_meter.sh’