#!/bin/bash set -e print() { printf "%-15s: %s %s\n" "$1" "$2 $3" "$4" } cpu_frequency() { for i in /sys/devices/system/cpu/cpufreq/policy* ; do local cpus=$(cat $i/affected_cpus|sed -e 's/^\([0-9]\).*\([0-9]\+\)$/\1-\2/') local mhz=$(cat $i/scaling_cur_freq|awk '{printf "%.2f",$_/1000}') local gov=$(cat $i/scaling_governor) echo "CPU $cpus" print " freq" $mhz "MHz" print " gov" $gov done } cpu_count() { set -- /sys/devices/system/cpu/cpu[0-9]* print "CPU count" $# } temp() { for i in /sys/class/thermal/thermal_zone* ; do local type=$(cat $i/type|tr '[a-z]' '[A-Z]'|sed -e 's/-THERMAL/ Temp/') local temp=$(cat $i/temp|awk '{printf "%.2f",$_/1000}') print "$type" $temp "C" done } usage() { echo "Usage: $0 [-w] [-h]" } all() { cpu_count cpu_frequency temp } WATCH="" for i in "$@"; do case $i in -w) WATCH=1 shift ;; -h|--help) usage exit 0 ;; *) usage exit 1 ;; esac done if [ -n "$WATCH" ]; then exec watch -n0.5 "$0" else all fi