Fancontrol을 통해 하드 드라이브 온도에 따라 팬 속도를 조정하는 방법은 무엇입니까?
답변1
마침내 하드 드라이브 온도에 따라 팬 속도를 제어하는 간단한 스크립트를 찾았습니다.팬 제어,높은 온도, 그리고Lm 센서. 아래 스크립트에서 "/dev/sda"모니터링할 하드 드라이브입니까?"/fancontrol/Hddtemp”는 Fancontrol Press에서 읽은 출력 파일입니다.Ctrl + Alt + T터미널을 열고 다음 명령을 실행하여 "/dev/sda" 맞다:
sudo hddtemp /dev/sd[az]
"SMART를 사용할 수 없음" 대신 온도를 표시하는 Hddtemp에서 지원하는 온도만 사용하십시오.
바꾸다"/dev/sda” 필요한 경우 스크립트에서 올바른 내용을 사용하십시오.
Fancontrol을 구성하지 않은 경우 참조하십시오.이 페이지,이 페이지, 그리고이 페이지그리고 다음 명령을 하나씩 실행합니다(첫 번째 명령을 실행한 후 Linux를 다시 시작).
sudo 센서 감지
시계 센서
sudo pwmconfig
sudo 서비스 fancontrol 시작
그런 다음 다음 프로세스를 수행합니다.
(1) 다음 명령을 실행하여 스크립트 파일을 생성합니다.
sudo mkdir -p "/Fancontrol/" & sudo xed /Fancontrol/HDD_temp
(2) 다음 스크립트를 파일에 복사하고 저장합니다.
#!/bin/bash
File=/Fancontrol/Hddtemp
while true
do
temperature=$(sudo hddtemp -n /dev/sda)
echo $(($temperature * 1000)) > "$File"
sleep 30
done
(3) 다음 명령을 실행하여 실행 가능하게 만듭니다.
sudo chmod +x /Fancontrol/HDD_temp
(4) 다음 명령어를 실행하여 서비스 파일을 생성합니다.
sudo xed /lib/systemd/system/HDD_temp.service
(5) 다음 줄을 파일에 복사하고 저장합니다.
[서비스]
ExecStart=/Fancontrol/HDD_temp
[설치]
WantedBy=multi-user.target
(6) 다음 명령을 하나씩 실행합니다.
sudo chmod 664 /lib/systemd/system/HDD_temp.service
sudo systemctl 데몬 다시 로드
sudo systemctl start HDD_temp.service
sudo systemctl 활성화 HDD_temp.service
그러면 스크립트 "하드 드라이브 온도"는 Linux가 시작될 때 시스템 서비스로 실행됩니다.
(7) 다음 명령을 실행하여 편집합니다. "팬 제어", 구성 파일.
sudo 수정 /etc/fancontrol
"로 시작하는 줄 찾기풍력 온도 제어 시스템".예를 들어:
FCTEMPS=hwmon1/pwm1=hwmon1/temp1_input
그 줄에는 "hwmon1/temp1_input"는 Fancontrol이 현재 읽고 있는 온도입니다(예: 칩셋 온도). "로 바꾸세요./fancontrol/Hddtemp”, 줄은 다음과 같습니다.
FCTEMPS=hwmon1/pwm1=/fancontrol/Hddtemp
파일을 저장하고 다음 명령을 실행하여 Fancontrol을 다시 시작하십시오.
sudo 서비스 팬 제어 다시 시작
그러면 팬은 "hwmon1/pwm1"응답할 것이다"/fancontrol/Hddtemp", 하드 디스크 온도입니다. "HDD_temp"와 "Hddtemp"는 각각 스크립트 파일과 출력 파일이므로 혼동하지 마십시오.
답변2
Mathew Wai의 답변이 매우 훌륭하다는 것을 알았지만 드라이브 절전 및 온도 데이터 손상과 관련된 몇 가지 문제가 발생했습니다. 이것은 나에게 안정적입니다.
FILE=/tmp/Hddtemp
while true
do
temperature=$(hddtemp -n /dev/sdc 2>/dev/null)
# Set base temp if we got nothing in stdout, this mean we are asleep
if [ "$temperature" == "" ]; then temperature=30; fi
# Get a tempfile to write out temp
NEW=$(mktemp /tmp/Hddtemp.XXXX)
echo $(($temperature * 1000)) > $NEW
# Handle case of initial/clean run
if [ -e $FILE ]; then
CLEAN="rm -f $(readlink -f $FILE)"
fi
# Atomic symlink replacement
ln -s $NEW $FILE.lnk
mv -T $FILE.lnk $FILE
# Clean old link, if it existed
$CLEAN
sleep 30
done
hddtemp가 발생하고 있다는 점을 고려하면떠나다다음 Debian 버전에서는 센서에서 읽을 수 있는 "drivetemp"를 사용하도록 이를 변경하여 다음을 교체하겠습니다.
temperature=$(hddtemp -n /dev/sdc 2>/dev/null)
그리고
temperature=$(sensors -A drivetemp-scsi-5-0|grep temp1|tr -s ' '|cut -d '+' -f 2|cut -d '.' -f1;)
나는 이 새로운 센서 방식이 꽤 오랫동안 안정적이라는 것을 알았습니다.