Как команда date взаимодействует с timedatectl?

У меня два сервера 16.04. timedatectl на обеих машинах показывает, что сетевое время включено, а NTP синхронизирован. Оба используют UTC. Затем я установил дату на следующий день в следующем месяце, используя date команда.

На первом сервере последующие вызовы date показать, что изменение времени действительно вступило в силу. timedatectl также показывает новую дату. Сетевое время все еще включено, но NTP синхронизирован = Нет.

На втором сервере последующие вызовы date не показывает новое время, и не показывает timedatectl, Время в сети все еще включено, и так же синхронизируется NTP.

Как это работает? Как это должно работать?

На обеих машинах я сделал ps -la | grep ntp чтобы увидеть, что время управляет чем-то другим, но ничего не обнаружилось.

Компьютер, который принимает новую дату и не выполняет повторную синхронизацию, работает в виртуальной коробке, но у меня установлены гостевые дополнения, поэтому я думаю, что это будет совместимо с синхронизацией NTP. Я не уверен в деталях другой машины - это машина Laravel Forge.

2 ответа

Вы задаете много хороших вопросов, я постараюсь ответить на них, но я также предлагаю вам вовремя прочитать этот 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 аргумент, это позволит вам настроить системное время

О ваших образцах машин

машина-1, как вы сказали, это машина, на которой работает virtualbox. Это позволяет вам устанавливать системные часы в обычном режиме (и даже иметь виртуальные аппаратные часы, с которыми вы можете связываться, если хотите).

То, что вы описываете, звучит нормально, вы изменили время суток, и клиент 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 и дать ему несколько минут. Это имеет смысл.

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