Точный хронометраж стал одним из важнейших компонентов современного развертывания программного обеспечения. Будь то убедившись, что журналы записаны в правильном порядке обновления или базы данных применяются правильно, вне синхронизации времени может привести к ошибкам, повреждению данных и других проблем, трудных для отладки.
Ubuntu 16.04 имеет синхронизацию времени, построенную и активированную по умолчанию с помощью сервиса timesyncd в Systemd. В этой статье мы рассмотрим некоторые основные команды, связанные со временем, убедитесь, что timesyncd активен, и знаете, как установить альтернативную службу сетевого времени.
Перед началом этой статьей вам потребуется сервер Ubuntu 16.04 с некорневой, sudo поддержкой пользователя, как описано в этом учебнике по первоначальной настройки сервера Ubuntu 16.04.
Самая основная команда для того, чтобы узнать время на вашем сервере date
. Любой пользователь может ввести эту команду для распечатки даты и времени:
date
Mo May 15 20:33:50 UTC 2017
Чаще всего ваш сервер по умолчанию укажет UTC часовой пояс, как подчеркивается в выводе выше. UTC является координированное время, время на ноль градусов долготы. Последовательно используя Universal Time уменьшает путаницу когда ваша инфраструктура охватывает несколько временных зон.
Если у вас есть различные требования, и необходимо изменить часовой пояс, вы можете использовать команду timedatectl
, чтобы сделать это.
Во-первых, список доступных часовых поясов:
timedatectl list-timezones
Список часовых поясов будет распечатан на экране. Вы можете нажать SPACE
на страницу вниз, и b
на страницу вверх. После того, как вы найдете правильный часовой пояс, введите q
чтобы выйти из списка.
Теперь установите часовой пояс с timedatectl set-timezone
, убедившись в том, чтобы заменить выделенную часть ниже на часовой пояс, который вы нашли в списке. Вы должны будете использовать sudo
с timedatectl
чтобы сделать эти изменения:
sudo timedatectl set-timezone America/New_York
Вы можете проверить изменения, выполнив date
еще раз:
date
Mo May 15 20:33:50 EDT 2017
Зона времени должна отразить вновь выбранное значение.
Теперь, когда мы знаем, как проверить часы и установить временные зоны, давайте удостоверимся, что наше время синхронизируются правильно.
До недавнего времени большинство синхронизации времени в сети не была обработана с помощью демона протокола сетевого времени или ntpd. Этот сервер подключается к пулу других серверов NTP, которые обеспечивают постоянное и точное обновления времени.
По умолчанию в Ubuntu теперь использует timesyncd вместо ntpd. timesyncd подключается к тем же серверам времени и работает примерно так же, но более легкие и более интегрированный с Systemd и командами низкого уровня Ubuntu.
Мы можем запросить статус timesyncd, запустив timedatectl
без аргументов. Вам не нужно использовать sudo
в этом случае:
timedatectl
Local time: Mo 2017-05-15 20:33:50 EDT Universal time: Mo 2017-05-15 20:33:50 EDT RTC time: Mo 2017-05-15 20:33:50 Time zone: Etc/UTC (UTC, +0000) Network time on: yes NTP synchronized: yes RTC in local TZ: no
Это распечатает местное время, всемирное время (которое может быть таким же, как местное время, если вы не перейдете от часового пояса UTC), а также некоторую информацию о времени сети. Network time on: yes
означает, что timesyncd включен, и NTP synchronized: yes
указывает на то, что время было успешно синхронизировано.
Если timesyncd не включен, включите его с помощью timedatectl:
sudo timedatectl set-ntp on
Выполните timedatectl
еще раз, чтобы подтвердить статус сетевого времени. Это может занять минуту для фактической синхронизации, но в конце концов , как Network time on:
и NTP synchronized:
следует читать yes
.
Хотя timesyncd прекрасно подходит для большинства целей, некоторые приложения, которые очень чувствительны даже к малейшим возмущениям во времени может быть лучше обслуживаться ntpd, так как он использует более изощренные методы, чтобы постоянно и постепенно поддерживать системное время.
Перед установкой ntpd, мы должны выключить timesyncd:
sudo timedatectl set-ntp no
Убедитесь в том, что timesyncd выключен:
timedatectl
Посмотрите Network time on: no
на выходе. Это средство timesyncd
было остановлено. Теперь мы можем установить пакет ntp
с apt-get
:
sudo apt-get install ntp
Ntpd будет запущен автоматически после установки. Вы можете запросить ntpd для получения информации о состоянии, чтобы убедиться, что все работает:
sudo ntpq -p
remote refid st t when poll reach delay offset jitter ============================================================================== 0.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 1.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 2.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 3.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 ntp.ubuntu.com .POOL. 16 p - 64 0 0.000 0.000 0.000 -makaki.miuku.ne 210.23.25.77 2 u 45 64 3 248.007 -0.489 1.137 -69.10.161.7 144.111.222.81 3 u 43 64 3 90.551 4.316 0.550 +static-ip-85-25 130.149.17.21 2 u 42 64 3 80.044 -2.829 0.900 +zepto.mcl.gg 192.53.103.108 2 u 40 64 3 83.331 -0.385 0.391
ntpq
является инструментом для запроса ntpd. Флаг -p запрашивает информацию о NTP — подключенных серверах ntpd. Ваш выход будет немного отличаться, но должны быть перечислены стандартные серверы пулаUbuntu плюс несколько других. Имейте в виду, что это может занять несколько минут ntpd для установления соединения.
В этой статье мы показали, как просматривать системное время, изменение часовых поясов, работы с Ubuntu по умолчанию с timesyncd, а также устанавливать ntpd. Если у вас есть более сложные потребности хронометража, чем то, что мы рассмотрели здесь, вы можете ссылаться в официальной документации NTP, а также взглянуть на пуле проекта NTP, глобальной группы добровольцев, обеспечивающих большую часть мировой инфраструктуры NTP.