Вступление
Точное хронометраж стал важнейшим компонентом современного развертывания программного обеспечения. Будь то проверка того, что журналы записаны в правильном порядке, или обновления базы данных применены правильно, несинхронное время может привести к ошибкам, повреждению данных и другим трудным для отладки проблемам.
Ubuntu 16.04 имеет синхронизацию времени, встроенную и активированную по умолчанию с помощью службы timeyncd системы. В этой статье мы рассмотрим некоторые основные команды, связанные со временем, проверим, активен ли timesyncd, и узнаем, как установить альтернативную сетевую службу времени.
Предпосылки
Перед началом этого учебного курса вам понадобится сервер Ubuntu 16.04 с пользователем без полномочий root с поддержкой sudo, как описано в https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu- 16-04 [это руководство по настройке сервера Ubuntu 16.04].
Навигация по основным временным командам
Самая простая команда для определения времени на вашем сервере - + date +
. Любой пользователь может набрать эту команду, чтобы распечатать дату и время:
date
OutputWed Apr 26 17:44:38 2017
Чаще всего ваш сервер по умолчанию использует часовой пояс UTC, как показано в приведенном выше выводе. UTC - Всемирное координированное время, время на нулевой долготе. Последовательное использование Universal Time уменьшает путаницу, когда ваша инфраструктура охватывает несколько часовых поясов.
Если у вас другие требования и вам нужно изменить часовой пояс, вы можете использовать команду + timedatectl
.
Сначала перечислите доступные часовые пояса:
timedatectl list-timezones
Список часовых поясов будет распечатан на вашем экране. Вы можете нажать + SPACE
для перехода вниз, а` + b + для перехода вверх. Как только вы найдете правильный часовой пояс, запишите его, затем наберите `+ q +
, чтобы выйти из списка.
Теперь установите часовой пояс с помощью + timedatectl set-timezone +
, обязательно заменив выделенную часть ниже на часовой пояс, который вы нашли в списке. Вам нужно использовать + sudo +
с + timedatectl +
, чтобы сделать это изменение:
sudo timedatectl set-timezone
Вы можете проверить свои изменения, снова запустив + date +
:
date
OutputWed Apr 26 13:55:45 2017
Аббревиатура часового пояса должна отражать вновь выбранное значение.
Теперь, когда мы знаем, как проверить часы и установить часовые пояса, давайте удостоверимся, что наше время синхронизировано должным образом.
Управление timeyncd с помощью timedatectl
До недавнего времени большая часть синхронизации времени в сети осуществлялась демоном _Network Time Protocol или ntpd. Этот сервер подключается к пулу других NTP-серверов, которые предоставляют ему постоянные и точные обновления времени.
Стандартная установка Ubuntu теперь использует timesyncd вместо ntpd. Timesyncd подключается к тем же серверам времени и работает примерно так же, но он более легкий и более интегрированный с systemd и низкоуровневыми системами Ubuntu.
Мы можем запросить статус timesyncd, запустив + timedatectl +
без аргументов. Вам не нужно использовать + sudo +
в этом случае:
timedatectl
OutputLocal time: Wed 2017-04-26 17:20:07 UTC
Universal time: Wed 2017-04-26 17:20:07 UTC
RTC time: Wed 2017-04-26 17:20:07
Time zone: Etc/UTC (UTC, +0000)
RTC in local TZ: no
При этом выводится местное время, универсальное время (которое может совпадать с местным временем, если вы не переключались из часового пояса UTC), а также некоторая информация о состоянии сетевого времени. «+ Сетевое время включено: да » означает, что timesyncd включен, а « NTP синхронизирован: да +» означает, что время было успешно синхронизировано.
Если timesyncd не включен, включите его с помощью timedatectl:
sudo timedatectl set-ntp on
Снова запустите + timedatectl +
, чтобы подтвердить состояние сетевого времени. Фактическая синхронизация может занять минуту, но в конечном итоге и + Сетевое время при включении: +
и + NTP синхронизированы: +
должно прочитать + yes +
.
Переключение на ntpd
Хотя 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
Outputremote 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 (или p eers), к которым подключен ntpd. Ваш вывод будет немного другим, но в нем должны быть перечислены серверы пула Ubuntu по умолчанию, а также несколько других. Имейте в виду, что ntpd может установить соединение в течение нескольких минут.
Заключение
В этой статье мы показали, как просматривать системное время, изменять часовые пояса, работать с установленным по умолчанию Ubuntu timesyncd и устанавливать ntpd. Если у вас есть более сложные нужды, чем то, что мы рассмотрели здесь, вы можете обратиться к ical официальной документации NTP, а также принять посмотрите The NTP Pool Project, глобальную группу добровольцев, предоставляющих большую часть мировой инфраструктуры NTP.