我该如何设置?
想要将你的Linux电脑置于睡眠或休眠模式,并在特定时间自动唤醒吗?你可以通过rtcwake命令轻松实现,该命令在大多数Linux系统中默认包含。
如果你希望在特定时间让你的计算机执行某些任务,但又不想让它全天候运行,这将非常有用。例如,你可以在晚上让你的计算机进入睡眠状态,并在你进行一些下载之前将其唤醒。
rtcwake命令需要root权限,因此在Ubuntu和其他基于Ubuntu的发行版上必须使用sudo来运行。对于不使用sudo的Linux发行版,你需要首先使用su命令以root身份登录。
以下是该命令的基本语法:
sudo rtcwake -m [type of suspend] -s [number of seconds]
sudo rtcwake -m disk -s 60
-m开关接受以下类型的挂起:
待机 - 待机模式节省电力较少,但恢复到运行状态非常快速。如果您省略了-m开关,则默认为此模式。
内存 - 内存挂起。这种模式可以显著节省电力 - 所有内容都被置于低功耗状态,除了您的内存。您的内存内容将被保留。
磁盘 - 磁盘挂起。您的内存内容将被写入磁盘,并关闭计算机电源。当计时器完成后,计算机将开启并恢复其状态。
关闭 - 完全关闭计算机。rtcwake的手册指出,“关闭”模式在ACPI规范中没有官方支持,但在许多计算机上仍然有效。
无 - 不立即挂起计算机,只设置唤醒时间。例如,您可以告诉计算机在早上6点唤醒。之后,您可以在晚上11点或凌晨1点手动将其置于睡眠状态 - 无论哪种方式,它都会在早上6点唤醒。
-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’)
--date
参数呢?例如,我使用sudo rtcwake -m mem --date 08:55
来在那个时间唤醒我的电脑(我使用24小时制)。这个参数似乎接受与你使用的$(date …)
子命令相同的所有参数。 - Hi-Angel#!/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权限。
使用以下命令: Code:
dbus-send --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend
sleep 60s; dbus-send --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend