我正在寻找一种方法,让我的 Linux 家庭服务器在一段时间没有任何“心跳”网络活动后进入待机状态。我想使用 WOL 数据包作为心跳信号。这些包裹将由多个客户端发送,每个客户端的发送间隔为(比方说,每 15 分钟)一次。
因此,我们非常欢迎一个实际的例子。
答案1
#!/bin/bash 尽管 真的 做 关机-c 关机-h +15 & echo“等待魔包继续……” 数控-l 9 完毕
根据要求,这是丢失的文档。迟到了,但也许仍然有帮助:
该循环取消之前的关闭命令并将新的关闭命令设置为 15 分钟。然后它打开端口 9网猫公用事业。如果该端口上收到数据包,则循环将重新开始,否则计算机将关闭。
答案2
您的服务器可以通过以下几种简单方法来检查其他设备是否正在使用它:
/usr/sbin/arp
使用或 通过读取检查 arp 缓存/proc/net/arp
。您将在其中看到服务器最近与之通信的所有设备。这包括 MAC 地址,因此即使面对 DHCP,您也可以找到您的手机等。- 使用 ping(或 arping,不会被基于主机的防火墙阻止)主动轮询您的主机。
- 设置 iptables 规则来匹配您感兴趣的主机,然后检查它们的数据包计数器。如果计数器增加,则这些主机处于活动状态。
所有这些都可以通过相当简单的脚本来实现。然后,您可以让脚本将服务器置于 S3、S4 甚至 G2/S5 中,并让 LAN 唤醒功能唤醒服务器。
注意:在很多台式机主板上,S3 实际上并没有节省那么多电量。在你打扰之前先测量一下。或者确保至少使用 S4。
答案3
s2disk
您可以使用和使服务器进入睡眠状态s2ram
。这个问题when?
取决于你。您可以运行一些 cron 作业并在某些 IP 没有应答时对它们执行 ping 操作,然后进入睡眠状态。管他呢。
使用诸如etherwake
或之类的工具,wakeonlan
您可以通过magic
向网络发送数据包来唤醒处于睡眠状态的机器。
好读局域网唤醒
答案4
你可以试试sspenderhttps://github.com/mountassir/sspender
它允许您根据预定义的 CPU/磁盘使用情况暂停计算机,并确保计算机在您需要打开时的特定时间唤醒。