Вступление
Точное хронометраж стал важнейшим компонентом современного развертывания программного обеспечения. Будь то проверка того, что журналы записаны в правильном порядке, или обновления базы данных применены правильно, несинхронное время может привести к ошибкам, повреждению данных и другим трудным для отладки проблемам.
Ubuntu 18.04 имеет синхронизацию времени, встроенную и активированную по умолчанию с помощью службы timesyncd systemd. В этой статье мы рассмотрим некоторые основные команды, связанные со временем, проверим, активен ли timesyncd, и узнаем, как установить альтернативную сетевую службу времени.
Предпосылки
Перед началом этого руководства вам понадобится сервер Ubuntu 18.04 с пользователем без полномочий root и с поддержкой sudo, как описано вthis Ubuntu 18.04 server setup tutorial.
Навигация по основным командам времени
Самая простая команда для определения времени на вашем сервере -date
. Любой пользователь может набрать эту команду, чтобы распечатать дату и время:
date
OutputTue Jul 10 14:48:52 UTC 2018
Чаще всего ваш сервер по умолчанию будет использовать часовой поясUTC, как показано в приведенных выше выходных данных. UTC - этоCoordinated Universal Time, время на нулевой долготе. Последовательное использование Universal Time уменьшает путаницу, когда ваша инфраструктура охватывает несколько часовых поясов.
Если у вас другие требования и вам нужно изменить часовой пояс, вы можете использовать для этого командуtimedatectl
.
Сначала перечислите доступные часовые пояса:
timedatectl list-timezones
Список часовых поясов будет распечатан на вашем экране. Вы можете нажатьSPACE
для перехода на страницу вниз иb
для перехода на страницу вверх. Как только вы найдете правильный часовой пояс, запишите его и введитеq
, чтобы выйти из списка.
Теперь установите часовой пояс с помощьюtimedatectl set-timezone
, не забудьте заменить выделенную часть ниже на часовой пояс, который вы нашли в списке. Вам нужно будет использоватьsudo
сtimedatectl
, чтобы внести это изменение:
sudo timedatectl set-timezone America/New_York
Вы можете проверить свои изменения, снова запустивdate
:
date
OutputTue Jul 10 10:50:53 EDT 2018
Аббревиатура часового пояса должна отражать вновь выбранное значение.
Теперь, когда мы знаем, как проверить часы и установить часовые пояса, давайте удостоверимся, что наше время синхронизировано должным образом.
Управление timeyncd с помощью timedatectl
До недавнего времени большая часть синхронизации времени в сети выполняласьNetwork Time Protocol daemon или ntpd. Эта служба подключается к пулу других серверов NTP, которые предоставляют ей постоянные и точные обновления времени.
Стандартная установка Ubuntu теперь использует timesyncd вместо ntpd. Timesyncd подключается к тем же серверам времени и работает примерно так же, но он более легкий и более интегрированный с systemd и низкоуровневыми системами Ubuntu.
Мы можем запросить статус timesyncd, запустивtimedatectl
без аргументов. В этом случае вам не нужно использоватьsudo
:
timedatectl
Output Local time: Tue 2018-07-10 10:54:12 EDT
Universal time: Tue 2018-07-10 14:54:12 UTC
RTC time: Tue 2018-07-10 14:54:12
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
При этом выводится местное время, универсальное время (которое может совпадать с местным временем, если вы не переключались из часового пояса UTC), а также некоторая информация о состоянии сетевого времени. System clock synchronized: yes
указывает, что время успешно синхронизировано, аsystemd-timesyncd.service active: yes
означает, что timesyncd включен и работает.
Если timesyncd не активен, включите его с помощью timedatectl:
sudo timedatectl set-ntp on
Снова запуститеtimedatectl
, чтобы подтвердить статус сетевого времени. Фактическая синхронизация может занять минуту, но в конечном итоге иNetwork time on:
, иNTP synchronized:
должны прочитатьyes
.
Переключение на ntpd
Хотя timesyncd подходит для большинства целей, некоторые приложения, которые очень чувствительны к малейшим возмущениям во времени, могут лучше обслуживаться ntpd, поскольку он использует более сложные методы для постоянного и постепенного поддержания системного времени в нужном направлении.
Перед установкой ntpd мы должны отключить timesyncd:
sudo timedatectl set-ntp no
Убедитесь, что timesyncd выключен:
timedatectl
Найдите в выходных данныхsystemd-timesyncd.service active: no
. Это означает, чтоtimesyncd
был остановлен. Теперь мы можем установить пакетntp
с помощьюapt
:
sudo apt update
sudo apt install ntp
ntpd будет запущен автоматически после установки. Вы можете запросить у ntpd информацию о состоянии, чтобы убедиться, что все работает:
ntpq -p
Output 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
+ec2-52-0-56-137 216.239.35.0 2 u 16 64 1 7.872 -2.137 1.485
+66.220.10.2 129.6.15.30 2 u 12 64 1 65.204 3.740 2.686
+block.steinhoff 209.51.161.238 2 u 11 64 1 33.364 1.710 3.586
+eterna.binary.n 216.229.0.50 3 u 11 64 1 35.330 2.821 2.839
+2604:a880:800:1 209.51.161.238 2 u 14 64 1 0.394 0.386 2.462
+ec2-52-6-160-3. 130.207.244.240 2 u 11 64 1 8.150 2.050 3.053
+mx.danb.email 127.67.113.92 2 u 13 64 1 63.868 1.539 2.240
*hydrogen.consta 129.6.15.28 2 u 12 64 1 2.989 1.755 2.563
+ntp-3.jonlight. 127.67.113.92 2 u 10 64 1 64.561 2.122 3.593
+undef.us 45.33.84.208 3 u 12 64 1 33.508 1.631 3.647
+ntp-3.jonlight. 127.67.113.92 2 u 8 64 1 64.253 2.645 3.174
2001:67c:1560:8 145.238.203.14 2 u 22 64 1 71.155 -1.059 0.000
+test.diarizer.c 216.239.35.4 2 u 11 64 1 64.378 4.648 3.244
2001:67c:1560:8 145.238.203.14 2 u 18 64 1 70.744 -0.964 0.000
alphyn.canonica 132.246.11.231 2 u 17 64 1 7.973 -0.170 0.000
+vps5.ctyme.com 216.218.254.202 2 u 10 64 1 65.874 1.902 2.608
ntpq
- это инструмент запросов для ntpd. Флаг-p
запрашивает информацию о серверах NTP (илиpeers), к которым подключился ntpd. Ваш вывод будет немного другим, но в нем должны быть перечислены серверы пула Ubuntu по умолчанию, а также несколько других. Имейте в виду, что ntpd может установить соединение в течение нескольких минут.
Заключение
В этой статье мы показали, как просматривать системное время, изменять часовые пояса, работать с установленным по умолчанию Ubuntu timesyncd и устанавливать ntpd. Если у вас более сложные потребности в хронометрировании, чем то, что мы рассмотрели здесь, вы можете сослаться наthe offical NTP documentation, а также взглянуть наthe NTP Pool Project, глобальную группу добровольцев, обеспечивающую большую часть мировой инфраструктуры NTP.