Check and Monitor CPU Temperature
SUSE Linux Enterprise Server reports CPU and other component temperatures
through Advanced Configuration and Power Interface (ACPI) thermal zones
and hardware monitoring devices. Read the
CPU temperature from the ACPI thermal zones without installing any
software, or list all sensors with the sensors
command. Monitoring the temperature helps you reduce energy costs and
detect cooling problems early.
Prerequisites
sudoprivileges to install the sensors package and to runsensors-detect(reading the temperature requires no special privileges)
1 Why monitor CPU temperature? #
Checking and monitoring CPU temperature has several benefits.
Energy savings and cost reduction. When a CPU runs at full speed, it consumes more energy than when it is idling. Keeping CPUs cool is also a major cost factor, especially in data centers.
Identifying and monitoring processes that consume too much CPU power. Doing that can help free CPU resources and increase responsiveness.
Easier detection of cooling issues. If the CPU temperature approaches or exceeds the high or critical limits that your hardware reports, it indicates that there is a problem with the cooling system or the fan, or that the thermal paste was not applied correctly.
A long-term reduction of the carbon footprint can be achieved by adjusting the cooling parameters.
You can read the temperature in two ways: from the ACPI thermal zones that
the kernel exposes, which needs no additional software, or with the
sensors command, which lists all sensors that the kernel
provides. For details, see Section 3, “Reading the CPU temperature”.
2 Installing and configuring hardware sensors #
The sensors command is part of the
sensors package. To read the temperature from the ACPI
thermal zones, you do not need the package. For details, see
Section 3.1, “Reading the ACPI thermal zones”.
Install the required package.
On the mutable system:
>sudozypper install sensorsOn the immutable system:
>sudotransactional-update pkg install sensorsReboot the system to activate the change.
Check which sensors the kernel already provides:
>sensorsThe output lists the sensors that the kernel has registered, for example, ACPI thermal zones and NVMe drives. For a sample and an explanation, see Section 3.3, “Reading all sensors with the sensors command”. If the kernel has registered no sensor, the command reports
No sensors found!Optionally, search for additional hardware monitoring chips that the kernel does not register on its own, for example, on an I2C or SMBus adapter. Do this only if a sensor that you need is missing from the output of
sensors.Warning: Hardware probing can hang or damage a systemThe
sensors-detectcommand accesses hardware to identify chips. According to its man page, this can lock up the SMBus and, in rare cases, damage hardware. The man page advises against running the command on production servers.If you accept this risk, run the following command:
>sudosensors-detect --autoThe
--autooption runs the command without interaction and assumes the default answer to every question. Without it, the command asks each question and waits for your answer.If the command finds a chip, it prints a summary of the chips that it found. Because of the
--autooption, it accepts the default answer to the last question:Now follows a summary of the probes I have just done. Driver `coretemp': * Chip `Intel digital thermal sensor' (confidence: 9) Driver `to-be-written': * ISA bus, address 0xa40 Chip `ITE IT8686E Super IO Sensors' (confidence: 9) Do you want to generate /etc/sysconfig/lm_sensors? (YES/no): Created symlink '/etc/systemd/system/multi-user.target.wants/lm_sensors.service' → '/usr/lib/systemd/system/lm_sensors.service'.The command generates the file
/etc/sysconfig/lm_sensorsand enables and starts thelm_sensorsservice. The unit file of the service is part of the sensors package. To check the status of the service, run:>systemctl status lm_sensorsSample output:
● lm_sensors.service - Initialize hardware monitoring sensors Loaded: loaded (/usr/lib/systemd/system/lm_sensors.service; enabled; preset: disabled) Active: active (exited) since Mon 2026-09-21 07:40:32 CEST; 16ms ago Invocation: e3f984a1d2cf43528b9b753f1d698a65 Process: 1433 ExecStart=/sbin/modprobe -qab $BUS_MODULES $HWMON_MODULES (code=exited, status=0/SUCCESS) Process: 1436 ExecStart=/usr/bin/sensors -s (code=exited, status=0/SUCCESS) Main PID: 1436 (code=exited, status=0/SUCCESS) CPU: 34msIf the command finds no chip, it reports
Sorry, no sensors were detected. It generates no configuration file, and the service stays disabled. The sensors that thesensorscommand already lists are not affected.
To read the temperature, continue with Section 3, “Reading the CPU temperature”.
3 Reading the CPU temperature #
This section describes two ways to read the temperature. If neither shows a temperature, the operating system has no access to a temperature sensor, as is the case in a virtual machine that does not emulate one.
3.1 Reading the ACPI thermal zones #
The kernel exposes each ACPI thermal zone as a directory named
/sys/class/thermal/thermal_zoneN.
Reading these files requires neither the sensors
package nor special privileges.
>grep . /sys/class/thermal/thermal_zone*/{type,temp}
Sample output:
/sys/class/thermal/thermal_zone0/type:acpitz /sys/class/thermal/thermal_zone1/type:acpitz /sys/class/thermal/thermal_zone0/temp:40900 /sys/class/thermal/thermal_zone1/temp:52900
The grep . command prints the name of each file in
front of its content, so that every value stays assigned to its zone. The
temperature is given in millidegrees Celsius: 40900
means 40.9°C. The type acpitz identifies an ACPI
thermal zone.
If /sys/class/thermal contains no
thermal_zoneN directory,
the system has no ACPI thermal zone. Use the
sensors command instead.
Each zone can define trip points. To list the first trip point of the first zone, run:
>grep . /sys/class/thermal/thermal_zone0/trip_point_0_{type,temp}
Sample output:
/sys/class/thermal/thermal_zone0/trip_point_0_type:critical /sys/class/thermal/thermal_zone0/trip_point_0_temp:100000
A trip point of type critical gives the temperature at
which the kernel shuts down the system to protect the hardware. Its value
is also in millidegrees Celsius: 100000 means 100°C.
When a zone reaches this temperature, the kernel logs the messages
critical temperature reached and
HARDWARE PROTECTION shutdown (Temperature too high).
3.2 Identifying readings that come through ACPI #
You can recognize a reading that comes through ACPI in two ways:
Its zone in
/sys/class/thermalhas the typeacpitz.In the output of the
sensorscommand, its chip name isacpitz-acpi-0and its adapter isACPI interface.
To see the name that the system firmware gave to each zone, read the
path file of the zone:
>grep . /sys/class/thermal/thermal_zone*/device/path
Sample output:
/sys/class/thermal/thermal_zone0/device/path:\_TZ_.TZ00 /sys/class/thermal/thermal_zone1/device/path:\_TZ_.TZ01
The kernel reports that a reading comes through ACPI, but not which component the zone measures. The firmware chooses the names.
Sensors that the sensors command lists under another
chip name, such as the NVMe drive nvme-pci-0090 in
the following section, are provided by their own kernel drivers and do
not come through ACPI.
3.3 Reading all sensors with the sensors command #
The sensors command lists every temperature sensor
that the kernel has registered, not only the ACPI thermal zones. It needs
the sensors package, as described in
Section 2, “Installing and configuring hardware sensors”, but no special
privileges. To obtain a snapshot of the current temperatures, run:
>sensors
Sample output:
nvme-pci-0090 1 Adapter: PCI adapter 2 Composite: +49.9°C (low = -273.1°C, high = +69.8°C)3 (crit = +99.8°C) acpitz-acpi-0 4 Adapter: ACPI interface temp1: +40.9°C temp2: +52.9°C
The device that reports the values. The name consists of the driver
( | |
The interface through which the device is accessed, for example,
| |
The temperature of the device, followed by the low, high and critical limits that the device reports. | |
The ACPI thermal zones. Each zone is one temperature. In this
example, |
The sensors command lists the sensors that the kernel
has already registered. It does not depend on
sensors-detect, which only searches for additional
chips (see Section 2, “Installing and configuring hardware sensors”). The kernel
drivers coretemp for Intel processors and
k10temp for AMD processors provide the CPU
temperature.
The output of the sensors command depends on the
type of hardware installed on your machine, as different hardware
components have different sensors.
4 Monitoring CPU temperature in real time #
To monitor the temperature in real time, run the sensors
command with the watch command:
>watch sensors
The watch command is part of the
procps package. It runs a command at regular intervals
and shows its output in the terminal. Sample output:
Every 2.0s: sensors sles16: 07:23:01 AM
in 0.007s (0)
nvme-pci-0090
Adapter: PCI adapter
Composite: +49.9°C (low = -273.1°C, high = +69.8°C)
(crit = +99.8°C)
acpitz-acpi-0
Adapter: ACPI interface
temp1: +40.9°C
temp2: +52.9°C
By default, the watch command updates the output every
two seconds. You can change this interval with the -n
option followed by the number of seconds. For example, to change the
interval to 5 seconds, run:
>watch -n 5 sensors
Press Ctrl–C
to stop the watch command.
5 Troubleshooting #
This part describes potential problems when monitoring CPU temperatures and their solutions.
5.1 Why are the displayed temperatures unrealistic? #
If you suspect that the displayed temperature is too low or too high, you can try the following:
Compare the temperatures of the ACPI thermal zones with the
acpitzentries in the output of thesensorscommand. Both show the same zones, so the values should agree. For the commands, see Section 3, “Reading the CPU temperature”.Use a different tool that reads the same kernel sensors, for example,
s-tui, a terminal utility that shows the temperatures that the system reports together with the CPU frequency and utilization. It is provided by SUSE Package Hub, whose packages are community-maintained and delivered without L3 support. If Package Hub is not enabled, runSUSEConnect --list-extensions, which prints the command to enable it.Install the s-tui package:
On the mutable system:
>sudozypper install s-tuiOn the immutable system:
>sudotransactional-update pkg install s-tuiReboot the system to activate the change.
Then run
s-tuifrom the terminal.
If none of these recommendations solve the issue, the problem might be due to unsupported or faulty hardware. In this case, you need to seek help from your hardware manufacturer.
5.2 Why is the displayed temperature too high? #
If the CPU temperature is too high, here are actions you can take:
Verify that the CPU cooling system, such as the fan or heat sink, works correctly. Ensure that the fan is spinning properly and that the heat sink is making proper contact with the CPU. If necessary, you may need to replace the thermal paste between the CPU and the heat sink to improve heat transfer.
Adjust the power settings on your system to reduce heat generation. Lowering the CPU frequency or enabling power-saving features can help keep the temperature in check.
Monitor the system load and CPU usage. High CPU usage for extended periods can lead to increased temperatures. Identify resource-intensive processes with tools such as
toporps, then consider optimizing or limiting their usage. For more information, see https://www.suse.com/support/kb/doc/?id=000016916.
6 For more information #
For more information about the
sensorscommand and its configuration, see the man pagesman sensors,man sensors-detectandman 5 sensors.conf.For more information about monitoring CPU load and other system metrics from a Web interface, see Viewing metrics and history in Cockpit.
For more information about making your computing more environmentally sustainable, see https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1009324.
7 Legal Notice #
Copyright© 2006– 2026 SUSE LLC and contributors. All rights reserved.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or (at your option) version 1.3; with the Invariant Section being this copyright notice and license. A copy of the license version 1.2 is included in the section entitled “GNU Free Documentation License”.
For SUSE trademarks, see https://www.suse.com/company/legal/. All other third-party trademarks are the property of their respective owners. Trademark symbols (®, ™ etc.) denote trademarks of SUSE and its affiliates. Asterisks (*) denote third-party trademarks.
All information found in this book has been compiled with utmost attention to detail. However, this does not guarantee complete accuracy. Neither SUSE LLC, its affiliates, the authors, nor the translators shall be held liable for possible errors or the consequences thereof.