#!/bin/bash 
 | 
  
 | 
set_cpu_freq() { 
 | 
    echo userspace > $1/scaling_governor 
 | 
    echo $2 > $1/scaling_setspeed 
 | 
    cur=`cat $1/scaling_cur_freq` 
 | 
    if [ "$cur" -eq "$2" ];then 
 | 
        echo "cpu freq policy:${d##*policy} success change to $cur KHz" 
 | 
    else 
 | 
        echo "cpu freq: failed change to $2 KHz, now $cur KHz" 
 | 
    exit 
 | 
    fi 
 | 
} 
 | 
  
 | 
if [ "$#" -eq "1" ];then 
 | 
    for d in /sys/devices/system/cpu/cpufreq/*; do 
 | 
        read -a array < $d/scaling_available_frequencies 
 | 
        let j=${#array[@]}-1 
 | 
        for i in `seq 0 $j`; do 
 | 
            if [ "$1" -eq "${array[$i]}" ];then 
 | 
                set_cpu_freq $d $1 
 | 
                exit 
 | 
            fi 
 | 
        done 
 | 
        echo "cpu freq: $1 is not in available frequencies: "${array[*]}"" 
 | 
        echo "cpu freq: now $(cat $d/scaling_cur_freq) Hz" 
 | 
    done 
 | 
else 
 | 
    cnt=0 
 | 
    RANDOM=$$$(date +%s) 
 | 
    while true; do 
 | 
        for d in /sys/devices/system/cpu/cpufreq/*; do 
 | 
            read -a FREQS < $d/scaling_available_frequencies 
 | 
            FREQ=${FREQS[$RANDOM % ${#FREQS[@]} ]} 
 | 
            echo -n "cnt: $cnt, " 
 | 
            set_cpu_freq $d ${FREQ} 
 | 
            let "cnt=$cnt+1" 
 | 
        done 
 | 
    done 
 | 
fi 
 |