Как команда 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
и дать ему несколько минут. Это имеет смысл.