大家好,又见面了,我是你们的朋友全栈君。
最近把树莓派用作了Aria2下载机+无线路由,24小时不间断工作,生怕机子有时会过热烧坏,所以写了个脚本做温度记录,以及在温度过高时能自动关机保护。下面直接上Shell脚本(/data/temperature.sh):
#!/bin/sh
# 高温阈值
hot_temp=80.0
# 低温阈值
cold_temp=-70.0
# 过热预警连续出现次数
hot_cnt=0
# 过冷预警连续出现次数
cold_cnt=0
while (true) do
temp=`/opt/vc/bin/vcgencmd measure_temp|awk -F= '{print $2}'|awk -F\' '{print $1}'`
echo $temp
# 网上有实验表明,树莓派温度达到 -78°C 的低温下会停止工作
# http://shumeipai.nxez.com/2019/04/02/what-is-the-ideal-raspberry-pi-cpu-temperature-range.html
if [ `expr "$temp < $cold_temp"` ]; then
if [ $cold_cnt > 3 ]; then
echo "太冷了,我不会是在太空中吧!" >&2
halt -p
break
else
let cold_cnt+=1
fi
elif [ `expr "$temp > $hot_temp"` ]; then
if [ $hot_cnt > 3 ]; then
echo "太热了,需要关机休息一下!" >&2
halt -p
break
else
let hot_cnt+=1
fi
else
# 需要连续出现温度预警才会关机
hot_cnt=0
cold_cnt=0
if [ `expr "$temp < 0.0"` ]; then # 有点冷
echo "警告:当前温度有点冷,小心受凉!" >&2
elif [ `expr "$temp < 40.0"` ]; then # 待机温度
sleep 0.1
elif [ `expr "$temp < 70.0"` ]; then # 正常工作温度
sleep 0.1
elif [ `expr "$temp < $hot_temp"` ]; then # 挖矿温度?
echo "警告:我有点热,注意控制温度!" >&2
fi
fi
sleep 10
done
另外,还可以写个服务配置文件(/etc/systemd/system/temperature.service):
[Unit]
Description=Temperature Monitor
After=network.target
[Service]
ExecStart=/data/temperature.sh > /data/temperature.log &
Restart=on-abort
[Install]
WantedBy=multi-user.target
最后执行一下systemctl enable temperature,这样每次开机时就会自动启动温度监控脚本。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/128631.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...