Невозможно скоординировать правильное время между системой и rtcwake

Конечная цель - отключить мою систему в конце скрипта и просыпаться в определенное время на следующий день. Я использую rtcwake, чтобы сделать это, например (я также печатаю дату и время вывода только для сравнения)

/bin/date /usr/sbin/rtcwake -m off -l -t $(date -d "21:00 today" +"%s") -n

, выход которого

Mon Sep 18 20:59:12 EDT 2017 rtcwake: wakeup from "off" using /dev/rtc0 at Mon Sep 18 17:00:00 2017

Итак, хотя дата и время, возвращенные /bin/date, верны, и я (думаю, что я) устанавливаю время пробуждения на 21:00, rtcwake интерпретирует время как 17:00, за 4 часа до , (Я понимаю, что я настраиваю его на пробуждение в тот же день здесь. Я хочу заставить его работать, а затем изменить его, чтобы проснуться на следующий день.)

Чтобы устранить неполадку, я немного изменил скрипт, удалив определенное время, прочитайте

/bin/date /usr/sbin/rtcwake -m off -l -t $(date +"%s") -n

, который дал выход

Mon Sep 18 21:14:46 EDT 2017 rtcwake: wakeup from "off" using /dev/rtc0 at Mon Sep 18 17:14:46 2017

, который снова за 4 часа до фактического времени. Это заставило меня думать, что date не имеет правильного времени. Но когда я изменил сценарий, чтобы удалить параметр -l из команды rtcwake

/bin/date /usr/sbin/rtcwake -m off -t $(date +"%s") -n

, выход был

Mon Sep 18 21:18:04 EDT 2017 rtcwake: assuming RTC uses UTC ... rtcwake: wakeup from "off" using /dev/rtc0 at Tue Sep 19 01:18:04 2017

, который теперь через 4 часа после текущего время. 4-часовая разница для меня не имеет смысла, поскольку я нахожусь на EDT (Нью-Йорк), а UTC - разница в 5 часов.

Я играл еще немного и получил следующее:

1.

/bin/date /usr/sbin/rtcwake -m off -t $(date +"%s" -d "tomorrow 10:00") -n Mon Sep 18 21:19:11 EDT 2017 rtcwake: assuming RTC uses UTC ... rtcwake: wakeup from "off" using /dev/rtc0 at Tue Sep 19 14:00:00 2017

2.

/bin/date /usr/sbin/rtcwake -m off --date tomorrow 10:00 -n Mon Sep 18 21:20:55 EDT 2017 rtcwake: assuming RTC uses UTC ... rtcwake: wakeup from "off" using /dev/rtc0 at Tue Sep 19 04:00:00 2017

3

/bin/date /usr/sbin/rtcwake -m off -l --date tomorrow 10:00 -n Mon Sep 18 21:21:16 EDT 2017 rtcwake: wakeup from "off" using /dev/rtc0 at Mon Sep 18 20:00:00 2017

В заключение: Я думаю, что rtcwake не действительно знаю, в какое время это происходит, хотя я не могу быть уверен, что я даже правильно вхожу в дату и время пробуждения. Я несколько раз открывал руководства rtcwake и date, но я не вижу своей проблемы. Большое спасибо заранее!

3
задан 19 September 2017 в 06:16

4 ответа

У меня была аналогичная проблема (rtcwake использовал другое время, чем «местное» время), но после прочтения команды timedatectl здесь я в конце концов понял, что мой часовой пояс неверен.

] Я установил часовой пояс с помощью этой команды:

timedatectl set-timezone MYTIMEZONE

После этого rtcwake использует правильное время даже с настройками по умолчанию (мне не нужно указывать --local.

0
ответ дан 18 July 2018 в 06:36

Я лично проверил себя.

Чтобы проверить, что я просто сделал «sudo rtcwake -m disk -s 60», который просто впал в спячку и разбудил его после 1 мин.

Здесь нужно отметить, что rctwake использует UTC, а не ваше местное время, если не указано.

Теперь вместо этого вам нужно синхронизировать ваши часы с текущим временем, а затем на основе разница изменит ваше «etc / adjtime» с помощью режима sudo и изменится в зависимости от разницы.

В моем случае я использую IST, который равен +5: 30, т.е. 5 часов 30 минут вперед, поэтому я написал «5:30 "в файле adjtime.

Теперь, если я использую команду sudo rtcwake -local -m disk -s 60, она показывает мое время IST, а не предыдущее время UTC.

Итак, теперь вам нужно добавить параметр «--local» или «-l», как указано в man-странице.

Пример: «sudo rtcwake --local -m no -l -t $ (date +% s -d 'завтра 09:30') "

разбудит вашу систему на следующий день в 9:30 по местному времени из / dev / rtc0. После этого вы можете настроить cron, чтобы установить это автоматически.

Источники: справочная страница rtcwake, от того, как выкинуть, еще несколько конфигураций

0
ответ дан 18 July 2018 в 06:36

У меня была аналогичная проблема (rtcwake использовал другое время, чем «местное» время), но после прочтения команды timedatectl здесь я в конце концов понял, что мой часовой пояс неверен.

] Я установил часовой пояс с помощью этой команды:

timedatectl set-timezone MYTIMEZONE

После этого rtcwake использует правильное время даже с настройками по умолчанию (мне не нужно указывать --local.

0
ответ дан 24 July 2018 в 18:38

Я лично проверил себя.

Чтобы проверить, что я просто сделал «sudo rtcwake -m disk -s 60», который просто впал в спячку и разбудил его после 1 мин.

Здесь нужно отметить, что rctwake использует UTC, а не ваше местное время, если не указано.

Теперь вместо этого вам нужно синхронизировать часы с текущим временем, а затем на основе разница изменит ваше «etc / adjtime» с помощью режима sudo и изменится в зависимости от разницы.

В моем случае я использую IST, который равен +5: 30, т.е. 5 часов 30 минут вперед, поэтому я написал «5:30 "в файле adjtime.

Теперь, если я использую команду sudo rtcwake -local -m disk -s 60, она показывает мое время IST, а не предыдущее время UTC.

Итак, теперь вам нужно добавить параметр «--local» или «-l», как указано в man-странице.

Пример: «sudo rtcwake --local -m no -l -t $ (date +% s -d 'завтра 09:30') "

разбудит вашу систему на следующий день в 9:30 по местному времени из / dev / rtc0. После этого вы можете настроить cron, чтобы установить это автоматически.

Источники: справочная страница rtcwake, от того, как выкинуть, еще несколько конфигураций

0
ответ дан 24 July 2018 в 18:38

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

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