如何让rtcwake使用正确的时间来唤醒?

如何让rtcwake使用正确的时间来唤醒?

我需要一种方法来每天上午 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 的。当您告诉rtcwakeRTC 时钟设置为当地时间(带有)时,它就是当地时间-l

相关内容