硬盘休眠状态监控脚本-带可视化查询

Labope03 2026-06-10 16:36 1

我想知道自己的 NAS 硬盘什么时候休眠什么时候活动,想知道一天被唤醒多少次。所以写了这个脚本。
DiskMonitorV1.0_20260610


这个脚本是按自己的需求写的,主要实现以下功能
1 )实时查询硬盘休眠状态并记录
2 )后台定时查询并记录硬盘状态
3 )统计 24h 后硬盘唤醒次数及总唤醒时间
4 ) 24h 硬盘活动图表
5 )最大化精简脚本,不额外安装依赖。只用了 hdpram 查询硬盘和 python3 运行 http 服务


一般情况下,适用于所有的 linux ,只要你安装了 hdparm 和 python3 。


实际运行截图如下:
status


log


项目文件


/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

最新回复 (4)
  • git00ll 06-10 21:41
    1
    考虑加到 prometheus 里吗
  • git00ll 06-10 21:41
    2
    其实不用做页面的
  • pathinfuture 06-10 21:49
    3
    老兄,好歹给个 github ,这 quark 这个,实在是。。。让人看不起的呀
  • Labope03 楼主 06-11 09:47
    4
    @pathinfuture 哈哈。。随便写着玩的,直接本地脚本打包扔上来了 懒得上传到 github 了
* 帖子来源V2EX
返回