Откуда `date` получить дату?
В новой записной книжке я настроил Ubuntu для автоматической синхронизации времени. Часовой пояс установлен на UTC +8. Нет проблем с датой, когда ноутбук подключен к Интернету.
Но когда я запустил ноутбук в режиме с воздушным зазором (в автономном режиме), я заметил, что время, отображаемое Ubuntu, неверно. Я могу подтвердить, что оба date
а также date -u
вернулась неверная дата. Не установлен TZ в терминале. Дата в меню UEFI по-прежнему правильная. я полагаю, что date
не использует дату из часов ноутбука. Как date
разрешить дату в этом случае?
Я пытался установить время в меню UEFI, чтобы 07/09/2016 21:04:xx
и выполнил следующие команды:
$ date
Ahd Jul 10 05:04:25 MYT 2016
$ date -u
Sab Jul 9 21:04:26 UTC 2016
$ sudo hwclock
Ahad 10 Jul 2016 05:04:35 MYT .057058 seconds
$ sudo hwclock --localtime
Sabtu 09 Jul 2016 09:04:39 MYT .813741 seconds
Дата, которую я установил в UEFI, теперь стала результатом date -u
в то время как это должно быть результатом для date
, Это как-то связано со службой времени EUFI?
2 ответа
Как вы уже упоминали, есть два разных часа:
- Программные часы устанавливаются и используются ядром Linux и обеспечивают время для всех программ.
- Аппаратные часы (часы реального времени) имеют резервное питание от батареи (т.е. всегда работают) и используются для настройки системных часов при загрузке.
UEFI не имеет доступа к системным часам и поэтому использует RTC. date
использует системные часы. Причиной, по которой он работает правильно при наличии подключения к Интернету, может быть ntp
сервис который настраивает время при запуске?
Вы можете использовать sudo dpkg-reconfigure tzdata
для текстовой опции, чтобы правильно установить системное время. Если Ubuntu по-прежнему будет отображать дату вашего последнего входа в систему (правда?) После перезагрузки, похоже, существует проблема с инициализацией системных часов на основе RTC при запуске.
Источник: man rtc
Похоже, что Ubuntu (начиная с версии 15?) Предполагает, что RTC находится в UTC по умолчанию. Вот результат timedatectl
команда:
$ timedatectl
Local time: Ahd 2016-07-10 16:07:28 MYT
Universal time: Ahd 2016-07-10 08:07:28 UTC
RTC time: Ahd 2016-07-10 08:07:28
Time zone: Asia/Kuala_Lumpur (MYT, +0800)
Network time on: yes
NTP synchronized: no
RTC in local TZ: no
Мне нужно убедиться, что остальные операционные системы установлены в системе для обработки RTC в UTC.