启动后弹出一个xterm,告知当前CPU工作模式,列出可用的CPU工作模式,让用户选择,然后将所有核心切换到用户选择的模式下。
建议在面板上添加一个“自定义程序启动器”,将命令设成这个脚本,然后在 /usr/share/pixmaps选一个合适的图标
依赖:cpufrequtils
代码: 全选
#!/bin/bash
#***关于这个程序********************************************************
# Filename:CPU frequency mode switch"
# E-mail:[email protected]"
# This program will set all core at the same time"
# Please install cpufrequtils at first"
# ReleaseDate:2010-5-22"
#*********************************************************************
#***以下为变量名解释*****************************************************
#CurrentFreqMode 字符串,当前的CPU频率模式
#AvailableFreqMode 字符串,所有可用的CPU频率模式
#ChooseFreqMode 字符串,作为设定目标的CPU频率模式
#QuantityOfCore 整数,CPU核心数量
#tmpi 整数,临时性的变量
#tmpj 字符串,临时性的变量
#tmpk 字符串数组,临时性的变量
#*********************************************************************
#***以下为准备工作*******************************************************
CurrentFreqMode=`cpufreq-info -p | awk '{ print $3 }'` #取得当前频率模式
export CurrentFreqMode #将字符变量给子进程xterm
#*********************************************************************
#***弹出的xterm,标题是 cpu frequency switch*****************************
exec xterm -title "cpu frequency switch" -e ' #要在xterm中运行的代码从这个单引号开始,到下一个单引号结束
#*********************************************************************
#***以下为准备工作*******************************************************
QuantityOfAvailableMode=`cpufreq-info -g | wc -w`
AvailableFreqMode=`cpufreq-info -g` #取得所有可用频率模式
QuantityOfCore=`cpufreq-info | grep "analyzing CPU"|wc -l` #计算核心数量
get_char()
{
SAVEDSTTY=`stty -g`
stty -echo
stty cbreak
dd if=/dev/tty bs=1 count=1 2> /dev/null
stty -cbreak
stty echo
stty $SAVEDSTTY
}
#**********************************************************************
#***以下为显示部分********************************************************
echo "current mode is $CurrentFreqMode" #显示当前CPU频率模式
echo "0.quit" #显示选项退出
let tmpi=1
for tmpj in $AvailableFreqMode #显示可用的CPU频率模式选项
do
tmpk[$tmpi]=$tmpj
echo "$tmpi.${tmpk[$tmpi]}"
let tmpi+=1
done
echo -n "type your choose (like:2):" #显示输入提示,不回车
#**********************************************************************
#***以下为输入部分********************************************************
read choose #读取选项,一个字符
#**********************************************************************
#***以下为处理输入的选项***************************************************
if [ "$choose" -eq 0 ]
then #如果选项是0
exit 0 #退出xterm
elif [ "$choose" -ge 1 ] && [ "$choose" -le "$QuantityOfAvailableMode" ] #如果选项是1
then
ChooseFreqMode=${tmpk[$choose]}
else #如果是其他数字
echo "Unavailable choose" #显示选项不可用
echo "Press any key to quit..." #按任意键退出程序
char=`get_char` #调用任意键的实现函数
exit 1
fi
#**********************************************************************
#***以下为设置CPU频率模式部分**********************************************
for ((tmpi=0; tmpi < $QuantityOfCore ; tmpi++)) #循环设定CPU的所有核心,需要管理员权限
do
sudo cpufreq-set -c "$tmpi" -g "$ChooseFreqMode"
done
echo "CPU switch to "$ChooseFreqMode"" #显示设定结果
#**********************************************************************
#***以下为任意键退出xterm部分**********************************************
echo “Press any key to quit...” #任意键退出
char=`get_char` #调用任意键的实现函数
exit 0 #退出xterm
#**********************************************************************
#***xterm的第二个单引号***************************************************
'
#**********************************************************************
exit 0;