From 081b242a077669f254ff2cb6ede1e92c029824e7 Mon Sep 17 00:00:00 2001 From: Maple Date: Wed, 19 Aug 2026 19:27:39 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20NVMe=20=E6=B8=A9=E5=BA=A6=E6=A3=80?= =?UTF-8?q?=E6=B5=8B=E6=94=B9=E7=94=A8=E5=AD=97=E7=AC=A6=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - /dev/nvme0(控制器,major 243)是字符设备,/dev/nvme0n1(命名空间)才是块设备(major 259) - 上一版 -b 块设备校验会跳过所有真实 NVMe 控制器,导致温度监控对 NVMe 失效,属回归缺陷 - 改为 -c 字符设备校验;glob 无匹配时的字面模式串既非字符也非块设备,跳过行为不变 --- src/modules/01-optimization/cpupower.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/01-optimization/cpupower.sh b/src/modules/01-optimization/cpupower.sh index 765a6a2..551e70e 100644 --- a/src/modules/01-optimization/cpupower.sh +++ b/src/modules/01-optimization/cpupower.sh @@ -327,8 +327,9 @@ EOF log_info "检测系统中的 NVME 硬盘" nvi=0 for nvme in /dev/nvme[0-9]; do - # glob 无匹配时 bash 会返回字面模式字符串,需校验真实块设备后跳过(参考下方 SATA 检测) - [ -b "$nvme" ] || continue + # 控制器节点为字符设备(如 /dev/nvme0,major 243),命名空间才是块设备(/dev/nvme0n1,不匹配本模式); + # 字符设备校验同时兼容 glob 无匹配场景(字面模式字符串非字符设备,自然跳过) + [ -c "$nvme" ] || continue chmod +s /usr/sbin/smartctl 2>/dev/null cat >> $tmpf << EOF