Я настроил systemd timesyncd для получения времени от NTP-сервера:
/etc/systemd/timesyncd.conf > NTP=ca.pool.ntp.org
systemctl restart systemd-timesyncd.service
timedatectl set-ntp true
Статус следующий:
$ timedatectl status
...
Network time on: yes
NTP synchronized: no
Как видно из вывода , время еще не синхронизировано. Может ли кто-нибудь помочь мне со следующими вопросами?
Чтобы использовать реальную реализацию NTP, вам необходимо установить и настроить ее, chrony
или, возможно, ntpd
. Сделайте это, если вам требуется какой-либо мониторинг показателей времени. Я предполагаю chrony.
Добавьте iburst
в свой пул
или server
строки в вашей конфигурации, чтобы ускорить несколько начальных пакетов. Для стабилизации еще может потребоваться пара минут, наберитесь терпения.
Отслеживание хроника
покажет текущее смещение. Имейте представление о ваших требованиях, точность в одну секунду может легко выдержать смещение в десятки миллисекунд.
chronyc maketep
немедленно выполнит текущую настройку. Обычно не требуется.
timesyncd
- это клиент SNTP, который может устанавливать время, но не дисциплинировать его постепенно и непрерывно, а также фильтровать удаленный сервер NTP на основе качества . (Он также не может разговаривать с оборудованием времени или PTP, только протоколом NTP.) Немного лучше, чем
повторил ntpdate
, под которым я имел в виду не очень хорошие часы. Лично я заменяю его на большинстве серверов.
Примерно единственный способ установить время с помощью timesyncd - вручную: timedatectl set-time "2019-01-15 00:40:16"
. У него нет надежных средств для дисциплины и контроля часов. Базовая статистика NTP через timedatectl timesync-status
- относительно новая вещь, я не думаю, что эта опция доступна в Red Hat 7 или Ubuntu 18.04.
systemd определяет "синхронизированный" как если бы NTP был когда-либо говорил Linux настроить часы. В частности, если вызов дисциплины ядра, adjtimex () вернул без ошибок, а не начальное состояние. См. Исходный код systemd / src / basic / time-util.c.
Без установки пакетов.... Выключите NTP, вручную установите время в достаточно близкое, снова включите NTP:
$ timedatectl set-ntp false
Да, это печально, но это работает, и вам не нужно беспокоиться об установке чего-либо и заставлять это работать. Получите приблизительное МЕСТНОЕ время от настенных часов, телефона, интернета. Это не обязательно должно быть идеальным, потому что мы включим ntp через мгновение...
$ sudo timedatectl set-time "2019-06-22 13:41:00"
$ sudo timedatectl set-ntp true
john@mybox:~$ timedatectl
Local time: Sat 2019-06-22 13:49:53 AEST
Universal time: Sat 2019-06-22 03:49:53 UTC
RTC time: Sat 2019-06-22 03:49:54
Time zone: Australia/Sydney (AEST, +1000)
System clock synchronized: no
NTP service: active
RTC in local TZ: no
При настройке "System clock synchronized: no" (Системные часы синхронизированы: нет) повернется к "yes" (Да), когда они будут считаться "синхронизированными".
$ cat /etc/systemd/timesyncd.conf
[Time]
NTP=pool.ntp.org
$ timedatectl timesync-status
Server: 13.210.208.89 (au.pool.ntp.org)
Poll interval: 8min 32s (min: 32s; max 34min 8s)
Packet count: 0
$ grep systemd-timesyncd /var/log/syslog | tail
Jun 22 14:13:09 meebox systemd-timesyncd[8333]: Timed out waiting for reply from 103.214.220.220:123 (au.pool.ntp.org).
Мои ntp-пакеты блокировались корпоративным брандмауэром.
.В качестве примечания для тех, кто борется с этой проблемой, иногда синхронизация все равно не работает в контейнерных системах (например, OpenVZ), если хост-компьютер не дает надлежащих прав.
Служба systemd-timesyncd
не запускается в контейнерных системах; файл службы содержит следующую директиву:
ConditionVirtualization=!container
Попытка прокомментировать это и перезапустить службу может сработать, но если хост-компьютер не дал права на контейнерную, у вас может быть такая ошибка в статусе systemctl systemd-timesyncd
output:
Aug 11 16:01:40 your-machine systemd-timesyncd[4736]: Failed to call clock_adjtime(): Operation not permitted