rtcwake только с помощью завтра, если время передается

мой сервер засыпает после 30 неактивных минут. И я должен разбудить свой сервер каждый день в 3:00. До сих пор я использую следующую запись крона:

@reboot /usr/sbin/rtcwake -m no -u -t $(date +\%s -d `tomorrow 03:00`)

Работы общий штраф за одним исключением. Если начальные загрузки сервера между 0:00 и 3:00 (если используется или активировал клиент) след время установлено на следующий день, сервер отправляется для бездействия до 3:00, и запланированное задание на 3:05 не запускается.

Как я могу использовать rtcwake для установки следа время к следующему разу, когда это будет 3:00, означая между 0:00 и 3:00 дня, след должен быть установлен на 3:00 текущий день, и после 3:00 он должен быть установлен на 3:00 в следующий день.

0
задан 28 October 2019 в 14:34

1 ответ

Следующая crontab запись должна сделать то, что Вы хотите:

@reboot /usr/sbin/rtcwake -m no -u -t $(date +\%s -d "$(date +\%D -d '3 hours ago') +1 day +3 hours")

Во-первых, мы вычитаем 3 часа до текущей даты и времени и только сохраняем дату:

$(date +\%D -d '3 hours ago')

... который приведет к любому сегодня (если это уже будет прошлое 3:00), или вчера в 0:00:00.

Добавление 1 дня и 3 часов:

$(date +\%s -d "[...] +1 day +3 hours")

... поэтому приведет к любому завтра 3:00 (если это уже будет прошлое 3:00), или сегодня 3:00.

1
ответ дан 22 December 2019 в 00:11

Другие вопросы по тегам:

Похожие вопросы: