适用系统硬盘不会自动休眠或无休眠设置项,主要用到 Linux下的 hdparm 命令,需要按实际情况进行设置

hdparm(hard disk parameters):

主要用来查看硬盘的相关信息或对硬盘进行测速、优化、修改硬盘相关参数设定。

查看是否已安装 hdparm

1
hdparm

640.png

安装 hdparm

1
apt-get install hdparm

查看本机所有磁盘

1
fdisk -l

640 (1).png

查看硬盘是否支持写入缓存,有* (星号),表示支持

1
sudo hdparm -I /dev/sda | grep 'Write cache'

640.png

让硬盘进入待机模式

1
hdparm -y /dev/sda1

让硬盘进入睡眠模式

1
hdparm -Y /dev/sda1

设置定时休眠

1
2
5分钟无操作休眠(参数是5的倍数,比如60*5是300秒也就是5分钟)
hdparm -S 60 /dev/sda1

查看 hdparm 配置

1
vim /etc/hdparm.conf

640.png

查看是否已安装 smartctl

1
smartctl

640.png

安装 smartctl

1
apt install smartmontools

查看硬盘状态,

ACTIVE(活动)

STANDBY(休眠)

1
smartctl -i -n standby /dev/sda |grep "mode"|awk '{print $4}'

创建脚本

1
vi /etc/spindown

脚本内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/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 &

TIP:

如果 hdparm 使用立即休眠有效果,而定时休眠不生效,可以尝试设置下面权限。

设置文件权限

1
chmod 777 /etc/spindown

执行脚本,sda 硬盘20分钟后休眠

1
/etc/spindown sda 20

放入开机程序启动

1
vi /etc/rc.local

640.png