我的服务器在闲置 30 分钟后进入睡眠状态。而且我需要每天凌晨 3 点唤醒我的服务器。到目前为止,我使用以下 cron 条目:
@reboot /usr/sbin/rtcwake -m no -u -t $(date +\%s -d `tomorrow 03:00`)
工作正常,有一个例外。如果服务器在 00:00 和 03:00 之间启动(如果由客户端使用或激活),则唤醒时间设置为第二天,服务器在 03:00 之前被发送到空闲状态,计划作业在 03:05没有开始。
如何使用 rtcwake 将唤醒时间设置为下一次将是 03:00,这意味着在一天的 00:00 和 03:00 之间,唤醒应该设置为当天的 03:00 和 03 之后:00 应该设置为第二天的 03:00。
以下 crontab 条目应该执行您想要的操作:
首先,我们从当前日期时间中减去 3 小时,只保留日期:
...这将导致今天(如果已经超过 3:00)或昨天 00:00:00。
加 1 天 3 小时:
...因此将导致明天 3:00(如果已经超过 3:00)或今天 3:00。