Мое местное время указано в правильном часовом поясе, но на самом деле это не настоящее местное время

Нет, они строго эквивалентны, оболочка выполняет dup2(2, 3)как для 3>&2, так и для 3<&2. Затем fd 3указывает на то же описание открытого файла , что и в fd 2. Это не влияет на режим/направление этого описания открытого файла . Невозможно изменить режим/направление описания открытого файла.

Операторы x>&yи x<&yотличаются только тогда, когда xопущен. >&y— это 1>&y(, то же, что и 1<&y), а <&y— это 0<&y(, то же, что и0>&y).

1
19.08.2020, 19:13
1 ответ

Просто для полноты картины убедитесь, что ваш часовой пояс по умолчанию правильный (, что, поскольку он уже говорит Asia/Kolkataи ISTв том, что вы видите, скорее всего, является избыточным ):

.
# dpkg-reconfigure tzdata

Используйте sudoили su, если вы еще не используете оболочку суперпользователя, конечно.

А затем синхронизируйте ваши системные часы с правильным временем UTC, используя демон, который получает время с некоторых серверов NTP (установив пакет ntp для этого, если он еще не установлен):

# ntpd -qg

Опция -qуказывает ntpdпросто установить время один раз и выйти. Он не становится демоном. Этот однократный режим -эквивалентен ntpdдля отдельной команды ntpdate.

Параметр -gважен по причинам, изложенным в разделе " Каков рекомендуемый способ синхронизации времени с помощью NTP?». Ваши часы намного больше , чем 1000 секунд, отличаются от правильного значения UTC. Разница в пять с половиной часов. Без использования опции -gntpdпросто откажется исправлять эту ситуацию.

(Конечно, есть и другие способы -переустановить системные часы на правильное время UTC. Вы можете ввести его вручную -в утилите SETUP прошивки машины или даже вручную -ввести его с помощью команды date. Существуют даже инструменты, отличные от ntpd, которые вы можете использовать для синхронизации с серверами NTP с этого момента, например, chronydиз пакета chrony .)

Почему

Вот что произошло. Когда вы работали только с Windows, ваши аппаратные часы реального -реального времени (RTC )интерпретировались Windows как местное (IST )время. Вы установили операционную систему на базе Linux -(, это относится не только к Kali Linux ), но не устранил конфликт между операционными системами на основе Linux -(Unix -как операционные системы вообще )и Windows.

Windows думала и до сих пор думает, что ваши настоящие -часы показывают местное (IST )время. Обычно операционные системы на базе Linux -считают, что ваши реальные -часы показывают универсальное (UTC )время. Обратите внимание, что на самом аппаратном обеспечении часов нет регистра часового пояса; Таким образом, каждая операционная система должна решить, что на самом деле представляют регистры даты и времени в часах, в каком часовом поясе работают часы.

Это фундаментальный конфликт. Вам нужно это исправить.

Операционные системы на базе Linux -часто предоставляют выбор интерпретации реальных -регистров времени так же, как это делает Windows, но это плохой выбор по многим причинам, которые были бы (и является,тут и там на WWW )целые вопросы и ответы сами по себе. Гораздо лучше, если Windows и ваша операционная система на базе Linux -согласны понимать регистры RTC как считывание универсального(UTC )даты и времени.

Это можно сделать, настроив Windows; есть довольно широко известный параметр реестра. На самом деле вам не нужно ничего делать на стороне Linux , кроме для синхронизации RTC с датой и временем UTC. Как вы можете видеть из вывода timedatectl, когда вы запустили его, у вас уже естьAsia/Kolkataв качестве (часового пояса по умолчанию )и уже есть «RTC в локальной часовой поясе». (т. е. «понимать регистры RTC как локальные, так же, как это делает Windows» )установлено на «нет».

Если Windows повторно -синхронизирует RTC обратно со значениями IST до того, как вы получите возможность перенастроить и перезагрузить его, вам потребуется снова синхронизировать обратно со значениями UTC.

Так почему же ваши часы в графическом интерфейсе идут правильно? Это потому, что, по иронии судьбы, вы не настроили его с правильным часовым поясом IST в его настройках или настройках вашего рабочего стола. Он показывает вам время UTC или, возможно, время Дублина/Лондона/Лиссабона/Бамако/Фритауна/Ямусукро, и потому что в вашей системе «время UTC», взятое из вашего RTC операционной системой, на самом деле является локальным Значения времени IST, как указано в Windows, ваши часы с графическим интерфейсом, показывающие время UTC , просто выглядят правильно .

Это та же самая причина, по которой «Универсальное время», сообщаемое timedatectl, имеет правильную дату и время для местного времени. Все, что сообщает о том, что ваша операционная система на базе Linux -в настоящее время считает UTC, на самом деле сообщает местную дату и время IST.

Резюме

Значит нужно

  • исправить часы реального -времени на истинные дату и время UTC (с ntpd, как указано выше,вручную -установка его в утилите SETUP встроенного программного обеспечения вашей машины при включении питания -или даже в Windows )и
  • переконфигурировать Windows, чтобы она согласилась с тем, как реальные -часы должны считываться операционными системами.

Дополнительная литература

5
18.03.2021, 23:11

Теги

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