免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 383228273
打印 上一主题 下一主题

在笔记本电脑上用 Linux 系统的同胞们进来下~~~ [复制链接]

论坛徽章:
0
31 [报告]
发表于 2010-07-02 09:38 |只看该作者
做个记号先

正准备在笔记本上装一个双系统

论坛徽章:
0
32 [报告]
发表于 2010-07-02 09:58 |只看该作者
mark
今晚回去试试我那老机器。

论坛徽章:
0
33 [报告]
发表于 2010-07-02 21:45 |只看该作者
acpitz-virtual-0
Adapter: Virtual device
temp1:       +77.0°C  (crit = +85.0°C)                  

eeepc-isa-0000
Adapter: ISA adapter
fan1:          0 RPM

coretemp-isa-0000
Adapter: ISA adapter
Core 0:      +54.0°C  (crit = +90.0°C)                  

coretemp-isa-0001
Adapter: ISA adapter
Core 1:      +54.0°C  (crit = +90.0°C)      
华硕EeePC1000H,操作系统Ubuntu10.04,以前在XP里也差不多这么高,但是风扇转速是0,是不是坏了?

论坛徽章:
0
34 [报告]
发表于 2010-07-03 01:17 |只看该作者
本帖最后由 383228273 于 2010-07-03 01:28 编辑
  1. #! /bin/bash

  2. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

  3. # 测试如果没有需要用到的文件就直接退出该脚本程序.
  4. [ -e '/proc/acpi/ibm/fan' ] && [ -e '/proc/acpi/ibm/thermal' ] || exit 0
  5. [ $(grep 'commands:' /proc/acpi/ibm/fan | wc -l) -eq '3' ] || exit 0

  6. # 下面温度值设置格式为 XX.YY 的形式,
  7. # XX 表示设置温度(系统温度高于此温度则风扇 level 切换为 'auto' 模式),
  8. # YY 表示设置温度范围(系统温度低于 XX 温度,且还要继续降低 YY 温度),
  9. # 要系统所有温度值低于(XX 减去 YY)值以下,才能把风扇 level 切换为 '1' 模式,
  10. # 设置 YY 值这范围,为了减少风扇频繁的 level 切换.
  11. TEMP_[1]='43.5'                # CPU
  12. TEMP_[2]='48.3'                # ???
  13. TEMP_[3]='-128'
  14. TEMP_[4]='47.4'                # GPU
  15. TEMP_[5]='35.2'                # ???
  16. TEMP_[6]='-128'
  17. TEMP_[7]='35.2'                # ???
  18. TEMP_[8]='-128'
  19. TEMP_[9]='46.2'                # ???
  20. TEMP_[10]='46.2'        # ???
  21. TEMP_[11]='-128'
  22. TEMP_[12]='-128'
  23. TEMP_[13]='-128'
  24. TEMP_[14]='-128'
  25. TEMP_[15]='-128'
  26. TEMP_[16]='-128'

  27. # 用 SYS_T 变量获取当前系统的温度值.
  28. SYS_T=$(sed 's/temperatures:\t//g' /proc/acpi/ibm/thermal)

  29. # 用 SYS_LEVEL 变量获取当前系统散热风扇的运行等级.
  30. SYS_LEVEL=$(grep '^level' /proc/acpi/ibm/fan | sed 's/level:\t\t//g')

  31. # 用 for 循环把 TEMP_ 数组排列成字符串赋值给 SET_T 变量.
  32. for (( I=1; I<=16; I=I+1 ))
  33. do
  34.         SET_T="${SET_T} ${TEMP_[${I}]}"
  35. done

  36. # 定义 SHOW_SYS_SET 函数来显示设置温度和系统温度.
  37. SHOW_SYS_SET () {
  38.         echo ${SET_T} | sed 's/ /\t/g'
  39.         echo ${SYS_T} | sed 's/ /\t/g'
  40. }

  41. # 定义 SET_SYS_LEVEL 函数为 SET_LEVEL 变量设置运行等级参数.
  42. SET_SYS_LEVEL () {
  43.         # 该 NUM 变量用于 SYS_T 数据的取值用 'SYS_T_0=$(echo ${SYS_T} | cut -d ' ' -f ${NUM})'.
  44.         NUM='0'       
  45.         # 该 NUM_ 变量用于满足'(系统温度值)<(设置温度值-设置温度范围值)'此条件的记录个数.                                                       
  46.         NUM_='0'                                                       
  47.         # 开始 for 循环,从 SET_T 变量中获取一个设置温度块,如: XX.YY 这样的字符串.
  48.         for SET_T_ in ${SET_T}                                               
  49.                 do       
  50.                 NUM=$((${NUM} + 1))               
  51.                 # 从 XX.YY 切取设置温度值 XX
  52.                 SET_T_0=$(echo ${SET_T_} | cut -d '.' -f 1)
  53.                 # 从 XX.YY 切取设置温度范围值 YY
  54.                 SET_T_1=$(echo ${SET_T_} | cut -d '.' -f 2)
  55.                 # 从 SYS_T 变量中切取一个温度值
  56.                 SYS_T_0=$(echo ${SYS_T} | cut -d ' ' -f ${NUM})
  57.                 # 系统温度值高于设置温度,则进入 IF 语句
  58.                 if [ ${SYS_T_0} -gt ${SET_T_0} ]; then
  59.                         # 设置 SET_LEVEL 变量为 'auto' 等级
  60.                         SET_LEVEL='auto'
  61.                         # 没必要继续了,直接退出 SET_SYS_LEVEL 函数
  62.                         return
  63.                 else
  64. # 若来到这步,则表示系统温度比设置温度低(或相等),是否低于该温度设置值的温度范围值!
  65. # 判断满足'(系统温度值)<(设置温度值-设置温度范围值)'此条件则 NUM_ 变量就累加 1 个.
  66. # 例:假设 53.8 这个值,其中 53 表示设置温度,后面的 8 表示此设置温度的范围值;
  67. # 当系统温度低于设置温度 53 时都还不能把 SET_LEVEL 直接设置为 '1' 来降低风扇速度,
  68. # 否则被出现频繁切换 level 的情况(我21楼写的就没考虑到频繁切换 level 的情况),
  69. # 还要再向下再降 8 度,低于这个温度范围值后(即:45度下),才能使 NUM_ 标记一个.
  70.                         [ ${SYS_T_0} -le $((${SET_T_0} - ${SET_T_1})) ] && NUM_=$((${NUM_} + 1))       
  71.                 fi               
  72.         done       
  73. # 最后,能来到这步则说明系统温度全部低于设置温度了,否则早就从 for 中 return 退出函数了;
  74. # 因 NUM 记录着所有温度值的个数,而 NUM_ 记录着温度降低时满足'(系统温度值)<(设置温度值-设置温度范围值)'的个数,
  75. # 若 NUM 等于 NUM_ 则说明系统所有温度都已低于规则值,可以把 SET_LEVEL 设置为 '1' 来降低风扇转速;
  76. # 若 NUM 不等于 NUM_ (应该是 NUM_ 小于 NUM) 则说明系统还有某一个或多个温度值还没低于温度范围值,
  77. # 继续维持现在的散热强度,使 SET_LEVEL 等于 SYS_LEVEL.
  78.         [ ${NUM} -eq ${NUM_} ] && SET_LEVEL='1' || SET_LEVEL=${SYS_LEVEL}
  79. }

  80. # 定义 HELP 帮助函数
  81. _HELP () {
  82.         echo "
  83.         用法: $0 [选项]

  84.         可用选项:
  85.         -t,--show-thermal        显示设置温度和系统温度
  86.         -l,--show-level                显示该脚本设置风扇运行等级( level 1 或 level auto)
  87.         -s,--set-level                分析设置温度和系统温度后设置风扇运行等级( level 1 或 level auto )
  88.                 -h,--help                        帮助
  89. "
  90.         exit 1
  91. }

  92. # 定义 MAIN 主函数
  93. _MAIN () {
  94.         case $1 in
  95.                 '-t' | '--show-thermal')
  96.                         SHOW_SYS_SET
  97.                         ;;
  98.         '-l' | '--show-level')
  99.             SET_SYS_LEVEL
  100.             echo "level $SET_LEVEL"
  101.             ;;
  102.         '-s' | '--set-level')
  103.             SET_SYS_LEVEL
  104.             [ ${SYS_LEVEL} = ${SET_LEVEL} ] || echo "level $SET_LEVEL" > /proc/acpi/ibm/fan
  105.             ;;
  106.         '-h' | '--help')
  107.                         _HELP
  108.             ;;
  109.         esac
  110. }

  111. _MAIN $1
复制代码
看 29 楼大姐说到的频繁切换 level 的问题,我 21 楼写的脚本就有这个问题,现在又改进了下,应该可以了 {:3_200:}

折腾了几天了,风扇的控制脚本就这样了 {:3_200:}

论坛徽章:
0
35 [报告]
发表于 2010-07-03 21:15 |只看该作者
效果怎么样呢?

论坛徽章:
0
36 [报告]
发表于 2010-07-04 14:06 |只看该作者
高人呀风扇都可以控制呀,学习了

论坛徽章:
0
37 [报告]
发表于 2010-07-05 18:33 |只看该作者
我使用的是XP   现在自己的笔记本想安装一个linux  的系统,就是不知道如何安装?我的笔记本是神州天运Q1600

论坛徽章:
0
38 [报告]
发表于 2010-07-06 15:56 |只看该作者
sunzg@sunzg-laptop:~/perl$ cat /proc/acpi/thermal_zone/THM1/temperature
temperature:             45 C
sunzg@sunzg-laptop:~/perl$ cat /proc/acpi/ibm/thermal
temperatures:        44 48 36 46 37 -128 37 -128 39 48 40 -128 -128 -128 -128 -128
sunzg@sunzg-laptop:~/perl$ cat /proc/acpi/ibm/fan
status:                enabled
speed:                2990
level:                auto

型号:T400

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
39 [报告]
发表于 2010-07-06 23:11 |只看该作者
俺的本本下面有一个散热的底座,貌似测试出来的值不真实呢。

多数情况下,出风口的风都是凉的。

论坛徽章:
0
40 [报告]
发表于 2010-07-12 18:13 |只看该作者
temperatures:        48 51 -128 44 38 -128 35 -128 43 47 -128 -128 -128 -128 -128 -128

计算机是X200S 超低配,用的是Ubuntu10.04
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP