我买了一台吵闹、耗电的家庭服务器。理想情况下,我希望它在我不使用它时准确关闭,并在我使用它时准确打开。
这个理想的场景是不可能的,所以我想出了一个不太理想但也更有可能的场景。
基于 https://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface我希望系统检测到空闲状态(例如,15 分钟负载 <= 0.01),然后它应该暂停到两者(混合暂停或 S4 后跟 S3)。让我们假设我可以让它发挥作用。
这样它就可以很快被网络唤醒唤醒并供我使用。
但是如果系统24小时没有使用,那么我希望系统从S3+4状态进入S5(软关机),这样下次服务器被唤醒(通过wake-on-lan)时,它可以从 S4 状态(挂起到磁盘)恢复。
有没有办法做到这一点?
也许 ACPI 控制器中有一个我可以激活的计时器,以便它在暂停 24 小时后关闭(除非它当前正在运行)。
或者我可以告诉 BIOS 从现在起 24 小时后关闭计算机并每小时更新一次?
或者是一个看门狗,如果 24 小时内没有被触碰,就会关闭服务器电源?
或者是否有另一种方法可以在计算机已经处于挂起至 RAM 状态时强制计算机软关闭?
编辑
解决方法可能是让另一台计算机(例如接入点)使用服务器中的 iDRAC 来关闭服务器。不太理想,但可能适合我的具体情况。然后,服务器应在启动时和每小时告诉接入点在 24 小时内关闭服务器电源。
答案1
要执行挂起到磁盘,您必须完全唤醒,打开磁盘电源以将休眠数据写入其中。
可能的解决方案:
- 将 BIOS 设置为每天在给定时间唤醒
/etc/pm/sleep.d
添加将使用thaw
或调用的脚本resume
。- 该脚本检查标记文件 (
touch /run/wakeuptime
) 并:- 标记文件存在且已存在 24 小时(*):开始休眠
- 否则创建标记 (
touch /run/wakeuptime
) 并暂停
理想情况下,您可以告诉 BIOS 仅在系统处于 S3 时唤醒,而在 S4 时保持睡眠状态。
(*) 为此我会使用[[ -n $(find /run -maxdepth 1 -path /run/wakeuptime -mmin -1440) ]]
.