【转】让电脑定时从待机或睡眠中唤醒

转载自: http://blog.rythdev.com/2012/03/let-pc-wake-automatically-from-suspend-or-hibernation-in-given-time/

本人与同住的朋友共享宽带,于是每天下班后的晚上都是网络拥堵期。想下载点东西,又怕妨碍别人正常上网,而白天又没这个时间。我就想,能不能 让电脑在晚上或者白天自动开机下载呢?经过检查,发现我的电脑不支持定时开机,这条路堵了。那换个思路,能不能定时从待机或睡眠状态恢复呢?答案是肯定 的!就是本文的主角 rtcwake

看名字就知道,rtcwake 是利用电脑主板上带的rtc来作为定时基准,在给定的时间唤醒处于待机或休眠状态的电脑。是不是很神奇?反正我觉得是。

好了,开始使用rtcwake,一开始以为先要安装,发现它已经是Linux的一个核心组件了,几乎所有发行版都自带的。可以直接在终端上输入

rtcwake   

来看是否可用。

rtc的用法很简单,例如下面的语句

rtcwake -m disk -s 7200

表示时电脑进入休眠模式,并在2个小时(7200秒)后自动唤醒。
-m 参数表示使用的模式,常用的有下面几个

standby
普通待机模式,为默认选项,对应 ACPI state S1
mem
待机到内存,即除内存之外把其他设备都进入低功耗模式,对应 ACPI state S3
disk
待机到硬盘,即休眠,把电脑的当前状态保存到硬盘,几乎不消耗外部电源,对应 ACPI state S4
off
通过条用系统的关机命令来休眠,对应 ACPI state S5

-s 参数表示唤醒时刻距离想在的时间,以秒为单位,例如-s 7200 为在2小时后唤醒.
-t 参数表示在具体某个时间唤醒,接受与epoch(1970-01-01)之间的秒数,可用date命令来转换,例如

rtcwake -m disk -t `date -d 10:45  +%s`

表示在10:45这个时刻唤醒。

具体命令的用法可以参看rtcwake的manpage
下面是一个让电脑自动唤醒执行若干任务,然后再关机的脚本

#!/bin/bash

# 休眠2小时后自动唤醒
sudo /usr/sbin/rtcwake -m disk -s 7200
# 稍微一个延时,让网络稳定等等
sleep 5
# 关掉显示器
xset dpms force off
# 执行若干任务
job1
job2
# 关机
sudo /sbin/shutdown -P now

rtcwake 与 shutdown 都需要root权限,可以把它们加进visudo的列表,就可以在使用sudo时不用输入密码。 从此某人的电脑在深夜会突然亮起来,风扇与硬盘会狂转几个小时,然后又自动关机,重归寂静。

此条目发表在 Linux使用 分类目录,贴了 , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>