最近下载一批资料,但是由于网络不太好,下载的速度太慢,只有凌晨的时候下载速度会快一点,因此就想写一个定时任务在凌晨三点自动开始下载。 但是另一方面我也不希望电脑一直开着,这样太浪费电了... 经过一番搜索,最终让我发现了这一工具:rtcwake
我们都知道,让 linux 定时关机或者定时休眠是一件很简单的事情,只需要通过 at 或 cron 设置好定时执行关机或休眠程序即可,基本上任何电脑都能够做到这一点。 但是如果想反过来,想在指定的时间让电脑自动启动就需要硬件和驱动的支持了。
我们可以通过下面命令来测试一下计算机是不是支持定时唤醒:
sudo rtcwake -m standby -s 10
正常情况下该命令会休眠到内存,然后10秒后又被唤醒。
rtcwake其实包括两个动作,第一个动作是休眠或关机,第二个动作是定时唤醒。
我们使用 -m mode 来设置 rtcwake 的关机/休眠模式,理论上 mode 的可选值包括:
但事实上,本机可能不会支持所有的 mode,我们可以通过 --list-modes 选项来查看本机支持的关机/休眠模式
rtcwake --list-modes
freeze mem disk off no on disable show
有三种格式来设置定时唤醒时间:
rtcwake 命令默认根据 /etc/adjtime(man adjtime_config) 中的第三行信息(UTC 或 LOCAL)来判断硬件时钟是按照 UTC 还是本地时间来设置的,但是你可以通过 -u/--utc 来强制要求 rtcwake 命令将硬件时钟看成是 UTC 时间,或者通过 -l/--local 选项来将硬件时钟看成是本地时间。甚至可以通过 -A/--adjfile file 来指定另一个 adjtime 文件供 rtcwake 命令判断。

