hdparm -s 设置硬盘空闲休眠倒计时,1–240对应5秒至20分钟(如120=10分钟),241–251对应30分钟至5.5小时(如241=30分钟),0为禁用;需配合-b 127启用apm才生效,且仅对直连sata盘可靠。

用 hdparm -S 设置空闲休眠倒计时
Linux 下机械硬盘休眠由内核驱动控制,hdparm 是最直接的命令行工具。关键参数是 -S,它设置硬盘在无 I/O 活动后多久进入 standby(停转)状态,但它的单位不是秒或分钟,而是“5 秒倍数”或“30 分钟倍数”:
-
-S 0:禁用自动休眠(最常用,适合存储盘长期在线) -
-S 120:120 × 5 秒 = 600 秒 = 10 分钟后休眠 -
-S 241:对应 30 分钟;-S 242= 60 分钟;-S 244= 120 分钟 - 数值范围 1–240 对应 5 秒~20 分钟;241–251 对应 30 分钟~5.5 小时
执行前必须确认设备名:sudo lsblk -o NAME,MODEL,SIZE,MOUNTPOINT,选中目标盘(如 /dev/sdb),**切勿对系统盘(通常是 /dev/sda)执行**,否则可能无法启动。
为什么 hdparm -S 不生效?检查 APM 和硬盘固件限制
很多机械硬盘默认关闭高级电源管理(APM),导致 -S 设置被忽略。这时需配合 -B 参数启用节能模式:
-
sudo hdparm -B 127 /dev/sdb:127 是推荐值,允许休眠且不激进降速 -
sudo hdparm -B 255 /dev/sdb:彻底关闭 APM,休眠功能失效 -
sudo hdparm -I /dev/sdb | grep "Advanced power management":查看当前 APM 状态
注意:部分 USB 硬盘盒(尤其 JMicron 或 ASMedia 主控)会拦截或忽略 hdparm 指令,此时命令看似成功,但硬盘实际不休眠。可运行 sudo hdparm -y /dev/sdb 强制停转测试——若无反应,基本就是固件级屏蔽。
让设置重启后仍有效:编辑 /etc/hdparm.conf
临时命令在重启后全部丢失,必须写入配置文件才能持久化。操作分三步:
- 用
sudo nano /etc/hdparm.conf编辑全局配置 - 在文件末尾新增一段(替换
sdb为你的真实设备名):/dev/sdb { spindown_time = 120 apm = 127 } - 保存后执行
sudo systemctl restart hdparm加载新配置(部分发行版需重启)
⚠️ 该配置仅对直连 SATA 盘可靠;USB 盘建议改用 hd-idle 工具或 systemd 定时服务模拟休眠逻辑,否则大概率失效。
验证休眠是否真正生效,而不是“假装停转”
不能只听声音或摸温度——有些硬盘休眠后仍保持电机微转或磁头悬浮,实际未断电。正确验证方式是:
-
sudo hdparm -C /dev/sdb:返回drive state is: standby才算真休眠;active/idle表示仍在运转 -
sudo smartctl -a /dev/sdb | grep "Power_On_Hours\|Start_Stop_Count":观察Start_Stop_Count是否随时间缓慢上升,突增说明频繁唤醒 - 避免用
ls或df验证——这些命令会强制唤醒硬盘,掩盖真实状态
真正稳定的休眠依赖两个条件:APM 开启 + 固件支持。如果硬盘本身不响应 -B 127,再调 -S 值也没用——这时候得换盘,或者接受它永远在线。











