The hddtemp utility will give you the temperature of your hard drive by reading data from S.M.A.R.T. on drives that support this feature.

Only modern hard drives have a temperature sensor. hddtemp supports reading S.M.A.R.T. information from SCSI drives too. hddtemp can work as simple command line tool or as a daemon to get information from all servers.
Install hddtemp
To install hddtemp under a Debian / Ubuntu Linux use apt-get command/apt command:$ sudo apt-get install hddtemp
Sample outputs:
Reading package lists... Done Building dependency tree Reading state information... Done Suggested packages: ksensors The following NEW packages will be installed: hddtemp 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 57.8 kB of archives. After this operation, 184 kB of additional disk space will be used. Get:1 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 hddtemp amd64 0.3-beta15-52+b1 [57.8 kB] Fetched 57.8 kB in 2s (22.6 kB/s) Preconfiguring packages ... Selecting previously unselected package hddtemp. (Reading database ... 115096 files and directories currently installed.) Preparing to unpack .../hddtemp_0.3-beta15-52+b1_amd64.deb ... Unpacking hddtemp (0.3-beta15-52+b1) ... Setting up hddtemp (0.3-beta15-52+b1) ... Processing triggers for systemd (232-25) ... Processing triggers for man-db (2.7.6.1-2)To install hddtemp under a CentOS/RHEL/SL/Oracle Linux, run yum command (first turn on EPEL repo):
$ sudo yum install hddtemp
Type the following pacman command to install hddtemp under an Arch Linux distro:
$ sudo pacman -S hddtemp
Type the following dnf command to install hddtemp under a Fedora Linux distro:
$ sudo dnf install hddtemp
Type the following zypper command to install hddtemp under an OpenSUSE Linux distro :
$ sudo zypper install hddtemp
A note about source code installation
You can also perform source code installation. Download the source code tar ball here.$ wget http://download.savannah.nongnu.org/releases/hddtemp/hddtemp-0.3-beta15.tar.bz2
Untar and install hddtemp using the following commands:
$ tar -jxvf hddtemp-0.3-beta15.tar.bz2
$ cd hddtemp-0.3-beta15
$ ./configure
$ make
$ sudo make install
Install hard disk temperature database at /usr/share/misc or /etc directory:
$ cd /usr/share/misc
# wget http://download.savannah.nongnu.org/releases/hddtemp/hddtemp.db
How do I monitor hard disk temperature?
To see temperature for /dev/sda, enter the following command:$ hddtemp /dev/sda
Sample outputs
/dev/sda: WDC WD2500YS-01SHB1: 25°CAbove output indicate that my hard disk temperature is 25°C. If temperature is higher than 60°C , consider cooling options immediately.
How Do I Find Out Remote Server HDD Temperature?
By default hddtemp bind to TCP/IP port 7634. You need to run hddtemp in daemon mode. Login on remote box and start it as follows to monitor /dev/sda, /dev/sdb, /dev/sdc, and /dev/sdd:# hddtemp -d /dev/sd[abcd]
Use telnet or nc / netcat command to to get a temperature from a remote box:
$ telnet remotebox 7634
OR
$ nc 192.168.1.100 7634
Sample outputs:
|/dev/sda|Samsung SSD 850 EVO mSATA 500GB|45|C|You can format it as follows using the awk command:
nc centos7-box 7634 | awk -F'|' '{print $2 " " $4 $5 "(" $3 ")"}'
Sample outputs:
/dev/sda 45C(Samsung SSD 850 EVO mSATA 500GB)
Shutdown Linux Computer If Temperature >= 55
To power off / shutdown computer, run following command via cron tab (cron job) file:t=$(hddtemp /dev/sda --numeric)
[ $t -ge 55 ] && /sbin/shutdown -h 0
Sample shell script to shutdown box if temperature >= 55°C (download link):
#!/bin/bash # Purpose: Shutdown server if disk temp crossed $ALERT_LEVEL # Author: Vivek Gite {https://www.cyberciti.biz/}, under GPL v.2.x # ----------------------------------------------------------------- HDDS="/dev/sda /dev/sdb /dev/sdc /dev/sdc /dev/sdd /dev/sde" HDT=/usr/sbin/hddtemp LOG=/usr/bin/logger DOWN=/sbin/shutdown ALERT_LEVEL=60 for disk in $HDDS do if [ -b $disk ]; then HDTEMP=$( ${HDT} --numeric ${disk} ) if [ $HDTEMP -ge $ALERT_LEVEL ]; then $LOG "System going down as hard disk \"$disk\" temperature ($HDTEMP) crossed its limit." sync;sync $DOWN -h 0 fi fi done |
$ sudo crontab -e
Append the following to run cron job every 10 minutes to check for disk temp:
*/10 * * * * /root/bin/chk-disk-temp.bash
Say hello to smartctl Utility
If you have smartctl utility installed, try it as follows to get temperature data:# smartctl -d ata -A /dev/sda | grep -i temperature
Output:
194 Temperature_Celsius 0x0022 122 095 000 Old_age Always - 28Set ALERT_LEVEL as per your requirements. Please refer to your hard disk manual for working temperature guideline. Here is general temperature guideline (extracted from Seagate SV35.2 Series Hard Drives Web Page):
Operating | 0 to 60 degrees C |
Nonoperating | -40 to 70 degrees C |
Maximum operating temperature change | 20 degrees C per hour |
Maximum nonoperating temperature change | 30 degrees C per hour |
Maximum operating case temperature | 69 degrees C |
No comments:
Post a Comment