操作系统:GNU/Linux Debian 9.2
我想更改计算机的行为,以在闲置 30 分钟时暂停 HDD。
到目前为止我发现我需要改变APM通过设置允许挂起磁盘的级别:
hdparm -B 127 /dev/sdX
其中 127 实际上是允许暂停驱动器(降速)的最大值。
然后我进入待机设置:
hdparm -S 241 /dev/sdX
其中241表示30分钟后待机。
hdparm
设置这些时没有报告错误。
现在我的问题是:
每次重启后这些设置都会消失吗?如果是这样,我应该将这些命令放在哪里才能使其持久?
请注意,我想立即影响以下设备:
/dev/sda
/dev/sdb
/dev/sdd
/dev/sde
警告: 这个问题只是为了实验目的。通过增加 HDD 的 SMART 中的启动/停止计数周期,您的 HDD 可能会比持续运行时恶化得更快。
答案1
每次重启后这些设置都会消失吗?
在软重启的情况下,驱动器保持通电状态,设置不会消失。重新启动电源会重置 APM 参数。 (至少,在我的笔记本电脑上)
大多数 setter 也是hdparm
. APM 设置可以通过以下方式轻松检查:
# hdparm -B /dev/sdb
/dev/sdb:
APM_level = 128
但这对于待机计时器选项不起作用。但从逻辑上讲,这些设置也会丢失。
我应该将这些命令放在哪里才能使其持久?
各种选项、自定义udev
规则、systemd
服务、cron
工作 ( @reboot
)。什么最适合你。
拱门维基是获取更多信息的一个很好的资源。
受上述 wiki 的启发,我systemd
为我的 Gentoo 系统创建了一个服务文件:
[Unit]
Description=hdparm sleep
After=suspend.target
[Service]
Type=oneshot
ExecStart=/sbin/hdparm -S 12 -B 127 /dev/sdb
[Install]
WantedBy=multi-user.target suspend.target
您可能希望同时使用您的设置影响所有设备,如下所示:
ExecStart=/sbin/hdparm -B 127 -S 241 /dev/sda /dev/sdb /dev/sdd /dev/sde
请注意,您必须对所有内容使用绝对路径,例如不能这样做cmd /dev/sd[abde]
。二进制文件的确切位置hdparm
在您的发行版中可能有所不同。
使用以下命令来了解hdparm
通常被调用的位置:
which hdparm
然后,您可以启用该服务并可选择启动它,您可能只想重新启动计算机以 100% 确定它可以正常工作。
# systemctl enable hdparm.service
# systemctl start hdparm.service
# systemctl status hdparm.service
hdparm
Arch 的提议抑制了输出,但我更喜欢使用最后发出的命令来验证是否成功。
编辑
我发现挂起后,参数不再保存在我的硬盘中。对于更多笔记本电脑系统来说可能是这种情况。因此我修改了示例单元文件。致谢这在unix.SO 上回答。