![如何让rtcwake使用正确的时间来唤醒?](https://linux22.com/image/108416/%E5%A6%82%E4%BD%95%E8%AE%A9rtcwake%E4%BD%BF%E7%94%A8%E6%AD%A3%E7%A1%AE%E7%9A%84%E6%97%B6%E9%97%B4%E6%9D%A5%E5%94%A4%E9%86%92%EF%BC%9F.png)
我需要一种方法来每天上午 11:45 唤醒 Debian 主机。
看起来 rtcwake 是一个很好的工具,但我无法让它使用正确的时间。
硬件时钟设置为UTC,我位于UTC+2:
# timedatectl
Local time: Tue 2017-03-28 01:19:45 CEST
Universal time: Mon 2017-03-27 23:19:45 UTC
RTC time: Mon 2017-03-27 23:19:46
Time zone: Europe/Paris (CEST, +0200)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
Sun 2017-03-26 01:59:59 CET
Sun 2017-03-26 03:00:00 CEST
Next DST change: DST ends (the clock jumps one hour backwards) at
Sun 2017-10-29 02:59:59 CEST
Sun 2017-10-29 02:00:00 CET
我什么也没尝试/l/u,但无济于事:
# rtcwake -m no -t `date +%s -d"2017-03-28 11:45"`
→ 09:44:59
# rtcwake -m no -l -t $(date +\%s -d '2017-03-28 11:45')
→ 13:44:59
# rtcwake -m no -u -t $(date +\%s -d '2017-03-28 11:45')
→ 9:45:00
我还应该在系统中更新其他内容以使 rtcwake 使用正确的时间吗?
谢谢。
-- 编辑:这是 cat /proc/driver/rtc 的输出:
rtc_time : 00:08:06
rtc_date : 2017-03-28
alrm_time : 09:45:00
alrm_date : 2017-03-28
alarm_IRQ : no
alrm_pending : no
update IRQ enabled : no
periodic IRQ enabled : no
periodic IRQ frequency : 1024
max user IRQ frequency : 64
24hr : yes
periodic_IRQ : no
update_IRQ : no
HPET_emulated : yes
BCD : yes
DST_enable : no
periodic_freq : 1024
batt_status : okay
顺便说一句,谷歌没有帮助找到如何取消作业:“rtcwake -m禁用”似乎不起作用。
答案1
据我看来,rtcwake
确实使用了正确的时间。显然,显示的时间是您的RTC时间,而不是您设置的时间(本地时区)。因此,当您rtcwake
将 RTC 时钟设置为 UTC(使用-u
或-a
默认)时,它是基于 UTC 的。当您告诉rtcwake
RTC 时钟设置为当地时间(带有)时,它就是当地时间-l
。