I have used of hdparm -n and smartctl -A but it always seem to be a "per drive" technique as a drive may answer for only one of these tools.

So, is there a standard way to get the drive temperature on Linux (HDD or SSD)? If not, what (other) tools can I use to get this information?


I like hddtemp, which provides a pretty standard way of getting the temperature for supported devices. It requires SMART support though.

Example Usage: sudo hddtemp /dev/sd[abcdefghi]

Example Response:

/dev/sda: WDC WD6401AALS-00J7B0: 31°C
/dev/sdb: WDC WD7501AALS-00J7B0: 30°C

  • 8
    A shorter way would be hddtemp /dev/sd?. – Rovanion Jun 28 '16 at 22:39
  • 2
    /dev/sd? spares even more fingers. – kkm Jan 2 '18 at 22:35
  • 1
    Don't forget the type prefix (PATA/SATA/SCSI) for some devices; this 8-bay UASP tower needs the SATA prefix or else I don't get any temperatures: sudo hddtemp SATA:/dev/sd{a..h} – genpfault May 17 '19 at 2:58

All SMART-capable devices should respond to smartctl. And I guss that only smart-devices have a temperature reading.

All other tools will propably be more or less vendor-specific (like Dell`s omsa). IPMI might be another generic approach, but I doubt, that a temperature-reading of a storage-device is standard there.


As mentioned by Rovanion, to list all drives in one go:

hddtemp /dev/sd?

Or, if you prefer a for loop:

for i in /dev/sd[a-z]; do hddtemp "$i"; done

You might want to try watch "sensors && sudo hddtemp /dev/sd?" which provides cpu and other temperature information in addition.

  • That's assuming lm-sensors is installed – Gordster Dec 9 '20 at 14:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.