Я имею два 16,04 серверов. timedatectl
на обоих шоу машин, что сетевое время идет, и синхронизируется NTP. Оба используют UTC. Я затем назначил дату к случайному дню в следующем месяце с помощью date
команда.
На первом сервере, последующих вызовах date
покажите, что изменение времени действительно вступило в силу. timedatectl
также показывает новую дату. Сетевое время все еще включено, но NTP, синхронизируемый = Нет.
На втором сервере, последующих вызовах date
не показывайте новое время, и ни один не делает timedatectl
. Сетевое время все еще включено, и синхронизируемый NTP - также.
Как это работает? Как это должно работать?
На обеих машинах я сделал ps -la | grep ntp
видеть, управляло ли что-то еще временем, но ничто не обнаружилось.
Машина, которая принимает новую дату и не повторно синхронизирует, работает в виртуальном поле, но мне установили гостевые дополнения, таким образом, я предполагаю, что это было бы совместимо с синхронизацией NTP. Я не уверен в деталях другой машины - это - машина Laravel Forge.
Вы задаете много хороших вопросов, я постараюсь на них ответить, но я также предлагаю вам вовремя прочитать этот unix.stackexchange q / a на linux . Он должен предоставить вам более глубокую информацию, чем конкретные вопросы, которые вы задаете.
timedatectl
- это программа для взаимодействия с systemd-timesyncd
, который является легким NTP-клиентом, предоставленным systemd
. Запустите man timedatectl
, чтобы получить простое для чтения описание программы. Например, Network time on: yes
просто означает, что служба systemd-timesyncd
включена. Вот и все.
Это также объясняет, почему вы не увидите, чтобы ps faux |grep ntp
ничего не возвращало. Встроенный ntp-клиент называется systemd-timesyncd
.
date
- это программа для запроса и манипулирования системной датой и временем. Это время, когда ваша операционная система думает, что это сейчас. Если вы запустили это с аргументом -s
, это позволит вам настроить системное время
machine-1 , который вы назвали машиной работает виртуалбокс. Это позволяет вам устанавливать системные часы в обычном режиме (и даже иметь виртуальные аппаратные часы, с которыми вы можете связываться, если хотите).
То, что вы описываете, звучит нормально, вы изменили время суток, и клиент ntp больше не будет правильно синхронизироваться. Вот почему команда ntpdate
долгое время существовала в Ubuntu, это однократная команда для приведения часов в выравнивание и передачи их клиенту ntp. systemd-timesyncd
теперь имеет эту встроенную функциональность, но работает только при запуске, а не постоянно.
машина-2 вы сказали, что это машина кузнечное дело . Я не уверен, что это конкретно. Если вы запустите sudo date -s '2018-04-18 12:00:00'
, это позволит вам это сделать? Что это говорит? Возможно, у вас нет возможности изменить системные часы на этом сервере. Например, это может быть контейнер (docker, lxd) какого-то типа.
На втором сервере (где я не мог изменить дату), выходя sudo timedatectl set-ntp off
решает проблему. Позже, когда я хочу повторно синхронизировать время, я выхожу sudo timedatectl set-ntp on
и дайте ему несколько моментов. Это имеет смысл.