以下内容均假设硬盘是/dev/sda,闲置20分钟后自动休眠

1、hd-idle
本工具通过SCSI层访问硬盘:

opkg install hd-idle
hd-idle -t sda

硬盘停转了就说明可用,可以去自定义它的配置文件参数位于/etc/config/hd-idle

如果操作之后hd-idle不自动启动,可以手动方式启用:

/etc/init.d/hd-idle enable
/etc/init.d/hd-idle start

也可以通过来判断是否加载了正确的配置文件:

ps | grep hd-idle

2、hdparm
如果hd-idle工作不正常,可以尝试一下hdparm:

opkg install hdparm
hdparm -y /dev/sda

如果这次听到了硬盘停转,那就可以创建一个脚本文件/etc/spindown,实现定时自动控制:

#!/bin/sh

oldstate=''
n="$2"
while :; do
    sleep 60
    newstate=$(grep "$1" /proc/diskstats) 
    if [ "$newstate" = "$oldstate" ]; then
        n=$(($n - 1))
        [ "$n" != 0 ] || hdparm -y /dev/"$1"
    else
        n="$2"
        oldstate=$newstate
    fi
done &

给脚本文件添加如下权限:

chmod 777 /etc/spindown

添加以下内容到/etc/rc.local,设定sda在20分钟后停转:

/etc/spindown sda 20

还有个更简单的方法是直接将以下内容插入/etc/rc.local中,参数240就代表20分钟:

hdparm -S 240 /dev/sda

3、sdparm
如果上述工具都不可用就可以尝试本工具:

opkg install sdparm
sdparm -f -C stop /dev/sda

如果这次你听到硬盘停转了,那么就使用和hdparm类似的脚本文件/etc/spindown,但不同点如下:

[ "$n" != 0 ] || hdparm -y /dev/"$1"
整行替换为
[ "$n" != 0 ] || sdparm -f -C stop /dev/"$1"
最后修改:2024 年 03 月 13 日
如果觉得我的文章对你有用,欢迎赞赏。