我想知道自己的 NAS 硬盘什么时候休眠什么时候活动,想知道一天被唤醒多少次。所以写了这个脚本。 DiskMonitorV1.0_20260610
这个脚本是按自己的需求写的,主要实现以下功能 1 )实时查询硬盘休眠状态并记录 2 )后台定时查询并记录硬盘状态 3 )统计 24h 后硬盘唤醒次数及总唤醒时间 4 ) 24h 硬盘活动图表 5 )最大化精简脚本,不额外安装依赖。只用了 hdpram 查询硬盘和 python3 运行 http 服务
一般情况下,适用于所有的 linux ,只要你安装了 hdparm 和 python3 。
实际运行截图如下:


项目文件
/var/www/hddstatus/
├── config # 统一配置文件
├── disk_events.log # 事件日志(运行时生成)
├── cache/ # 状态缓存目录
└── cgi-bin/
├── status # 硬盘状态页
├── log # 24h 趋势图表 + 日志
├── log-full # 全部日志纯文本
└── update-disk-info # 更新硬盘名称
/usr/local/bin/
├── disk_monitor.sh # 后台监控
├── disk_monitor_startup.sh # 启动时初始化
└── disk_info.sh # 硬盘名称缓存生成
/etc/systemd/system/
├── disk-monitor.service
└── hddstatus.service
/etc/sudoers.d/
└── hddstatus
使用教程:
使用 root 登录,或者 sudo
chmod +x diskmonitor_install.sh
chmod +x diskmonitor_uninstall.sh
安装
./diskmonitor_install.sh
卸载
./diskmonitor_uninstall.sh
状态页: http://机器 IP:58008/cgi-bin/status
日志页: http://机器 IP:58008/cgi-bin/log
修改配置: nano /var/www/hddstatus/config 然后 systemctl restart disk-monitor hddstatus
config 配置文件说明 1 )硬盘要监控几个,填在 DISKS 里 2 )后台监控时隔,默认 5 分钟,没必要太频繁。因为时隔为 5 分钟监控一次,所以记录的唤醒休眠时间可能会有几分钟偏差。 3 ) Web 服务端口,字面意思 4 )硬盘自定义显示名称,前面 DISKS 里有几块硬盘这里就加几条记录 5 ) hdparm 程序目录,自己按自己机器上的填,一般不用动。 6 )其余日志文件参数不要动。
# ========== 硬盘监控统一配置 ==========
# 要监控的硬盘设备(空格分隔)
DISKS="/dev/sda /dev/sdb"
# 后台监控检查间隔(秒),建议 ≥ 硬盘 spindown 时间
MONITOR_INTERVAL=300
# Web 服务端口
WEB_PORT=58008
# 硬盘自定义显示名称(可选)
# 格式:LABEL_设备名="显示名称"
LABEL_sda="WD-500G"
LABEL_sdb="GS-480G"
# hdparm 路径
HDPARM="/usr/sbin/hdparm"
如果硬盘很老,频繁 hdparm 查询硬盘状态会影响硬盘休眠(很少见),那就只能加大监控的间隔或不用这个脚本。 不对这个脚本对你们硬盘/机器带来的任何影响负责。需要自取。
脚本 链接: https://pan.quark.cn/s/9dd16addf27f