Skip to content

Commit 1e3abc8

Browse files
初始版本
1 parent e60b327 commit 1e3abc8

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

cpu_fan.sh

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
#!/bin/sh
2+
3+
#sleep 5
4+
#设置运行状态文件
5+
RUN=/var/run/cpu-fan.run
6+
touch $RUN
7+
chmod 777 $RUN
8+
#设置风扇默认运行模式,0为关闭,1为全速,2为自动,运行过程中可以直接修改/var/run/cpu-fan.run文件来生效
9+
echo "2" > $RUN
10+
#设置开启风扇的最低温度
11+
set_temp_min=35000
12+
#设置风扇全速运行的温度
13+
set_temp_max=70000
14+
15+
#开机风扇全速运行
16+
#默认的pwm值范围是0~1023
17+
gpio mode 1 pwm
18+
gpio pwm 1 1023
19+
20+
21+
#初始化参数
22+
fan=0
23+
24+
while true
25+
do
26+
#获取cpu温度
27+
tmp=`cat /sys/class/thermal/thermal_zone0/temp`
28+
status=`cat $RUN`
29+
30+
#计算pwm值,从变量set_temp_min设置的温度开始开启风扇,最低转速50%
31+
pwm=$((($tmp-$set_temp_min)*512/($set_temp_max-$set_temp_min)+511))
32+
33+
#设置pwm值上限
34+
if [ $pwm -gt 1023 ] ;then
35+
pwm=1023
36+
fi
37+
38+
39+
#小于设置温度关闭风扇
40+
if [ $tmp -le $set_temp_min ] ;then
41+
pwm=0
42+
fan=0
43+
else
44+
45+
#第一次超过设置温度全速开启风扇,防止风扇不能启动
46+
if [ $tmp -gt $set_temp_min ] && [ $fan -eq 0 ] ;then
47+
gpio pwm 1 1023
48+
fan=1
49+
sleep 5
50+
fi
51+
fi
52+
53+
54+
#检查run文件,为0时关闭风扇
55+
if [ $status -eq 0 ] ;then
56+
pwm=0
57+
fan=0
58+
else
59+
60+
#检查run文件,为1时持续开启风扇最高转速
61+
if [ $status -eq 1 ] ;then
62+
pwm=1023
63+
fi
64+
fi
65+
66+
gpio pwm 1 $pwm
67+
68+
#每5秒钟检查一次温度
69+
sleep 5
70+
71+
#输出日志
72+
echo "`date` temp=$tmp pwm=$pwm status=$status" >> /var/log/cpu-fan/cpu-fan.log
73+
done

0 commit comments

Comments
 (0)