我在Ubuntu Server 12.04上有一台家庭服务器,它实际上不需要在晚上使用电源,制造噪音等。不过,我太懒了,无法在晚上将其关闭,而在早晨又重新打开。

我想要一个命令行工具,可以在使笔记本电脑入睡的cronjob中运行,服务器并在设定的时间自动唤醒它。

简而言之:


如果具有GUI,则必须是可选的。
它必须可以从cronjob中运行。
它必须能够稍后唤醒计算机而没有副作用。

是否有一个程序可以执行此操作?

评论

......为什么执行pm-utils的简单cronjob不会削减它?

检查您的BIOS是否没有可设置为特定时间以定期启动的唤醒计时器。可以解决唤醒问题,可以通过Cron在关机时运行常见的“关机”。

您是否需要从另一台(看门狗)计算机上改变唤醒时间并对其进行控制,还是每天设置固定的时间足够?

@Caleb为每天设置固定时间就足够了

还是只是带有开/关时钟设置的墙上插头?以防万一您不具备BIOS支持

#1 楼

您不需要新软件即可执行此操作;这是您现有软件可以解决的方法。


使用cron在预配置的时间挂起计算机。
使用BIOS计时器在预配置的时间将其唤醒配置的时间。

关闭

在最近的几个版本中,Ubuntu使用了自己的家庭烘焙的init系统,称为upstart1。电源管理实用程序已经经历了两个阶段,因此,根据所使用的版本,可能有几种方法可以实现此目的。 Ask Ubuntu上的问题应该有助于弄清这一部分,但是您也可以尝试查找以下命令中的哪一个将您的计算机挂起(作为根用户):

# From the powermanagement-interface package
pmi action suspend

# From the pm-utils package
pm-suspend

# Using DBUS
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

# A little raw kernel api call 
echo -n mem > /sys/power/state


一旦找到对您的版本满意的那些文件之一,请将其粘贴在根cron作业中:

0 11 * * * <working command from previous step>


这是假设您在像11一样合理的时间。显然,您可以更改该部分:)

启动

为此,您将需要在BIOS中崩溃。此功能的名称因制造商而异,但大多数板卡都有在特定时钟时间加电的方法。

以下是配置为较晚的时间:



您可以从Google图像搜索中了解这些设置在各种BIOS中的外观:bios唤醒计时器。

1这实际上是他们决定将systemd与大多数其他主要发行版一起发行时,在下一发行版中进行了更改。发生这种情况时,systemctl suspend将废弃上述命令。

评论


您知道是否有办法从网络唤醒服务器吗?

–分形
2014-2-26在11:10



@Fractaliste它被称为Wake On LAN(WOL),如今,大多数网卡和BIOS都支持它,但这对Super User或其他用户来说是个问题。

–卡莱布
14年2月26日,12:55

至少在Debian中,有一个nvram-wakeup软件包可以使您免于BIOS设置的困扰。或者至少让您在不同日期的不同时间醒来。

–德罗伯特
2014年3月28日在17:47

@Fractaliste:Wan上也有Wake。

–user2284570
2014年5月28日13:52

您可能要添加systemd替代;)。

–脑袋
2014年10月6日16:40

#2 楼

我知道这是一个旧线程,但是对于那些最近发现它的人来说,我在Ubuntu Server 14.04.3(无GUI)上使用了“ systemctlsuspend”,它似乎可以正常工作。我使用WOL实用程序唤醒服务器。

我没有GUI界面,“ pmi-suspend”方法确实通过WOL挂起并唤醒,但我无法成功登录(通过SSH)并需要重启。

和平与祝福。

#3 楼

您可以尝试sspender https://github.com/mountassir/sspender

它允许您基于预定义的CPU /磁盘使用量挂起计算机,并确保计算机在特定时间唤醒当您需要将其打开时。