From a359d2138db2ca77e25d9166aede3e770e238639 Mon Sep 17 00:00:00 2001 From: nkozobrod Date: Thu, 6 Aug 2026 15:49:40 +0300 Subject: [PATCH] GPU temp custom sensor (file) + fan3 control via CoolerControl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - gpu_temp.sh: экспорт nvidia-smi temperature.gpu в файл (миллиградусы), 2-3s цикл - docker-compose.yml: mount ./gpu-temp:/run/gpu-temp:ro - .gitignore: gpu-temp (живой файл сенсора) --- .gitignore | 1 + docker-compose.yml | 3 ++- gpu_temp.sh | 24 ++++++++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100755 gpu_temp.sh diff --git a/.gitignore b/.gitignore index c6c555b..036f881 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ coolercontrol-config/ +gpu-temp diff --git a/docker-compose.yml b/docker-compose.yml index cdb3d80..37b48e1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,9 +8,10 @@ services: environment: - CC_DBUS=OFF volumes: - - /sys/class/hwmon/hwmon4:/sys/class/hwmon/hwmon4 + - /sys/class/hwmon:/sys/class/hwmon - /dev:/dev - ./coolercontrol-config:/etc/coolercontrol + - ./gpu-temp:/run/gpu-temp:ro networks: - proxy labels: diff --git a/gpu_temp.sh b/gpu_temp.sh new file mode 100755 index 0000000..a048c04 --- /dev/null +++ b/gpu_temp.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# gpu_temp.sh — экспорт температуры GPU (nvidia-smi) в файл для CoolerControl +# Custom Sensor (File) в CoolerControl читает файл в sysfs-формате: миллиградусы (33000 = 33°C) +# Файл монтируется в контейнер coolercontrold как /run/gpu-temp + +OUT_FILE="${GPU_TEMP_FILE:-/home/nkozobrod/docker/coolercontrol/gpu-temp}" +INTERVAL="${GPU_TEMP_INTERVAL:-3}" + +if ! command -v nvidia-smi >/dev/null 2>&1; then + echo "nvidia-smi not found" >&2 + exit 1 +fi + +# Первичная запись, чтобы файл существовал сразу +temp=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits 2>/dev/null | head -1) +[ -n "$temp" ] && echo $((temp * 1000)) > "$OUT_FILE" + +while true; do + temp=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits 2>/dev/null | head -1) + if [ -n "$temp" ]; then + echo $((temp * 1000)) > "$OUT_FILE" + fi + sleep "$INTERVAL" +done