前言

本人有几个外接的机械硬盘,在日常使用中有点烦我外接设备的自动休眠功能
而这个是写死了的(固件/控制器级别的休眠,我没法搞)
虽然这样可以延长硬盘的使用寿命,降低硬盘的功耗,更省电些.但我觉得这并不完全适合我的所有硬盘.
比如我其中一个500G硬盘用于给我这个512G的MAC做时间机器备份,而这个硬盘我是希望让它能自动休眠的.
但另外的其他硬盘,比如一个4T硬盘在我拷贝数据,或者浏览数据等情况时,却不想让它休眠.

原理

我们都知道当一段时间(我的这个设备是2min)未对该盘进行I/O后,硬盘就会自动进入休眠状态,停止电机。
但问题是,当下次你(或者操作系统)想要存取文件时,硬盘就要经过一段启动电机、硬盘开始加速、磁头寻道、读写文件这么一段流程,会产生长达几秒到十几秒不等的卡顿。尤其是我需要每次开启文件管理器或者是文件选取器时——只要读到了这个盘,就会产生一段时间的卡顿,这对于习惯了SSD的用户来说是十分难受的。
所以我们只需要让硬盘有定时 I/O 读写即可

实现

方案一(推荐,适用于硬盘有时插着,插着的时候能灵活控制休眠等情况)

代码演示以我MAC为主:
image-20220105150307603
可能需要chmod 777 文件名 赋予权限运行
需要休眠时候运行此文件即可,无需休眠关闭即可,缺点是指定了哪个硬盘,且不能静默无窗口运行
注:100指的是间隔100s后重新执行touch命令.

本来可以更优雅点,写个 AppleScript 脚本导出为 app 来运行。但考虑到技术有限就没弄了.

方案二(适用于硬盘一直插着且需后台定时运行脚本等情况)

简说,详细去搜索引擎找到答案,上面也有代码直接copy再去编辑 crontab 每隔几分钟执行脚本即可

方案三(适用于傻瓜式操作,但有概率无法实现)

Win平台 参考链接
可选操作(不一定有效,此操作来自互联网):[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\0012ee47-9041-4b5d-9b77-535fba8b1442\6738e2c4-e8a5-4a42-b16a-e040e769756e]
“Attributes”=dword:00000002
本来电源管理里边有一个设置是关于”Trun off hard disk after”
有的硬件平台上没有这个设置,我猜比如一堆Instant Go设备
加完这个注册表重启就出来。
Attributes这项1是隐藏,2是显示。
用注册表可以把这个设置显示出来,然后改成0,硬盘就不会自己关闭了。

Mac平台 大概率会遇到的问题