在特定的时间暂停和唤醒电脑。

我想让我的电脑在每天的04:58休眠,然后在05:15唤醒。
我该如何设置?

可能是重复的问题:在特定时间自动休眠和唤醒 - muru
4个回答

如何让你的Linux电脑自动从睡眠中唤醒

想要将你的Linux电脑置于睡眠或休眠模式,并在特定时间自动唤醒吗?你可以通过rtcwake命令轻松实现,该命令在大多数Linux系统中默认包含。

如果你希望在特定时间让你的计算机执行某些任务,但又不想让它全天候运行,这将非常有用。例如,你可以在晚上让你的计算机进入睡眠状态,并在你进行一些下载之前将其唤醒。

使用rtcwake命令

rtcwake命令需要root权限,因此在Ubuntu和其他基于Ubuntu的发行版上必须使用sudo来运行。对于不使用sudo的Linux发行版,你需要首先使用su命令以root身份登录。

以下是该命令的基本语法:

sudo rtcwake -m [type of suspend] -s [number of seconds]

例如,下面的命令将使您的系统进入休眠状态,并在60秒后唤醒:
sudo rtcwake -m disk -s 60

挂起的类型

-m开关接受以下类型的挂起:

待机 - 待机模式节省电力较少,但恢复到运行状态非常快速。如果您省略了-m开关,则默认为此模式。

内存 - 内存挂起。这种模式可以显著节省电力 - 所有内容都被置于低功耗状态,除了您的内存。您的内存内容将被保留。

磁盘 - 磁盘挂起。您的内存内容将被写入磁盘,并关闭计算机电源。当计时器完成后,计算机将开启并恢复其状态。

关闭 - 完全关闭计算机。rtcwake的手册指出,“关闭”模式在ACPI规范中没有官方支持,但在许多计算机上仍然有效。

- 不立即挂起计算机,只设置唤醒时间。例如,您可以告诉计算机在早上6点唤醒。之后,您可以在晚上11点或凌晨1点手动将其置于睡眠状态 - 无论哪种方式,它都会在早上6点唤醒。

秒数 vs. 特定时间

-s选项表示未来的秒数。例如,-s 60表示在60秒后唤醒计算机,而-s 3600表示在一小时后唤醒计算机。

-t选项允许您在特定时间唤醒计算机。此开关需要自Unix纪元(1970年1月1日UTC时间00:00:00)以来的秒数。为了轻松提供正确的秒数,可以将date命令与rtcwake命令结合使用。

-l开关告诉rtcwake硬件时钟设置为本地时间,而-u开关告诉rtcwake硬件时钟(位于计算机的BIOS中)设置为UTC时间。Linux发行版通常将硬件时钟设置为UTC时间,并将其转换为本地时间。

例如,要使计算机在明天早上6点30分唤醒但不立即挂起(假设硬件时钟设置为本地时间),请运行以下命令:

sudo rtcwake -m no -l -t $(date +%s -d ‘tomorrow 06:30’)

帮助


1这个问题有一个很好的rtcwake写作。它提供了完整的解决方案:http://askubuntu.com/questions/61708/automatically-sleep-and-wake-up-at-specific-times - gare
9请在从网站复制粘贴时至少提供链接:http://www.howtogeek.com/121241/how-to-make-your-linux-pc-wake-from-sleep-automatically/。 - hanoo
似乎 rtcwake 无法记住多个实例,那么我该如何让计算机每小时自动唤醒? - Yan King Yin
1你为什么不使用--date参数呢?例如,我使用sudo rtcwake -m mem --date 08:55来在那个时间唤醒我的电脑(我使用24小时制)。这个参数似乎接受与你使用的$(date …)子命令相同的所有参数。 - Hi-Angel

你可以用Gnome Schedule来完成(至少一半的)这个任务。(sudo apt-get install gnome-schedule)(注意:它会在你的启动器中显示为Scheduled Tasks,但是输入gnome-schedule仍然可以打开它。)
启动后,选择“新建”->“重复任务”。根据需要填写表单。
休眠的命令是/usr/sbin/pm-hibernate(挂起是/usr/sbin/pm-suspend)。
关于再次唤醒,请参考"如何安排从休眠中唤醒的时间?"
或者,您可以安装“电源管理接口”。(sudo apt-get install powermanagement-interface)
然后创建一个类似这样的脚本:
#!/bin/bash
# This script puts the system under standby mode for x hours
usage() {
echo "usage: $0 <n-hours>"
echo "where <n-hours> is the number of hours to be on standby"
exit 0

}
if [ $# -ne 1 ]
then
usage
fi

PATH=$PATH:/usr/sbin
hours=$1
echo 0 > /sys/class/rtc/rtc0/wakealarm
echo `date '+%s' -d "+ $hours hours"` > /sys/class/rtc/rtc0/wakealarm
## Edit the above line to get the exact length of hibernation you want
pmi action suspend

并将其安排在root的crontab中。

来源


你可以尝试在BIOS中设置唤醒事件,几乎每个主板都有这个功能。使用你的主板手册来找到它,在一些AMI BIOS中,它被称为RTC闹钟唤醒。我认为这是在特定时间唤醒电脑的简单方法。

所以如果有人感兴趣,这就是我发现的可行方法,无需安装任何东西,也不需要root权限。

使用以下命令: Code:

dbus-send --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend

使用睡眠命令来延迟执行,并在数字后面加上s、m、h或d(秒、分钟、小时、天),以及分号。
例如: 代码:
sleep 60s; dbus-send --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend

那个在60秒后暂停电脑。