Как настроить синхронизацию времени в Ubuntu
⏱️ Как настроить синхронизацию времени в Ubuntu
Возможно, вы настроили задания cron, которые запускаются в определенное время, для резервного копирования важных файлов или выполнения каких-либо системных задач.
Или, возможно, вы настроили сервер журналов на регулярную ротацию логов в вашей системе.
Если ваши часы не синхронизированы, эти задания не будут выполняться в нужное время.
Вот почему важно установить правильный часовой пояс в системах Linux и синхронизировать часы с Интернетом.
В этом руководстве рассказывается, как настроить синхронизацию времени в Ubuntu Linux.
Приведенные ниже шаги были протестированы в Ubuntu 18.04, однако они одинаковы для других систем на основе Ubuntu, которые используют службу timedc systemd.
Настройка синхронизации времени в Ubuntu
Обычно мы устанавливаем часовой пояс во время установки.
Однако вы можете изменить его или установить другой часовой пояс, если хотите.
Во-первых, давайте посмотрим текущий часовой пояс в нашей системе Ubuntu с помощью команды «date»:
Как видно из вышеприведенного вывода, команда «date» показывает фактическую дату, а также текущее время.
Здесь мой текущий часовой пояс – UTC, что означает Всемирное координированное время.
Кроме того, вы можете посмотреть файл /etc/timezone, чтобы найти текущий часовой пояс.
Теперь посмотрим, синхронизированы ли часы с интернетом. Для этого просто запустите:
Как вы можете видеть, команда «timedatectl» отображает местное время, универсальное время, часовой пояс, а также то, синхронизированы ли системные часы с интернет-серверами и активен или неактивен systemd-timesyncd.service.
В моем случае системные часы синхронизируются с интернет-серверами.
Примечание: скриншот выше. Вот почему вы видите разные даты.
Если вы видите «System clock synchronized: значение установлено как no, служба timesyncd может быть неактивна.
Итак, просто перезапустите сервис и посмотрите, поможет ли это
Теперь проверьте статус сервиса timesyncd:
Если эта служба включена и активна, ваши системные часы должны синхронизироваться с интернет-серверами времени.
Вы можете проверить, включена ли временная синхронизация или нет, используя команду:
Если это все еще не работает, выполните следующую команду, чтобы включить синхронизацию времени:
Теперь ваши системные часы будут синхронизироваться с интернет-серверами времени.
Изменить часовой пояс с помощью команды Timedatectl
Что если я хочу использовать другой часовой пояс, отличный от UTC? Это легко!
Во-первых, список доступных часовых поясов можно вывести с помощью команды:
Вы увидите вывод, похожий на изображение ниже.
Вы можете установить желаемый часовой пояс (например, Asia/Kolkata), используя команду:
Еще раз проверьте, действительно ли был изменен часовой пояс с помощью команды «date»:
$ date
Tue Jul 30 17:52:33 IST 2019
Или используйте команду timedatectl, если хотите получить подробный вывод:
Как вы заметили, я изменил часовой пояс с UTC на IST (индийское стандартное время).
Как установить часы в Кали Линукс 2020.Х?
Продолжаем тему настройки даты и времени в Кали Линукс обновлённой версии. В этой статье рассматривается вопрос о том, как правильно установить часы в Кали Линукс при помощи различных команд, в том числе синхронизируясь через сетевой временной протокол NTP. В Кали это можно сделать через GUI и с помощью терминала. С первого и начну. Как и в большинстве ОС, завязанных на графическом интерфейсе, в Кали доступны настройки даты и времени. Настройки доступны из контекстного меню от правой кнопки мыши и снабжены короткой справкой при наведении на рисунок в виде спасательного кружка:
То есть либо оставляем пустым либо дублируем рукописным вводом нужной зоны. Правильно заполнить поле можно сверившись со списком зон, о котором вы узнаете по ходу статьи. Чаще всего этими настройками пользователи остаются удовлетворены. Впрочем, изменения здесь проводимые не всегда вступают в силу. Так что призываем на помощь терминальные утилиты.
Для начала можете проверить текущую временную зону с помощью командной утилиты timedatectl. Она призвана просматривать и менять системные время и дату. Так и вводим
Сразу обратите внимание на предупреждение консоли. Если с временными настройками «что-то не так», оно не замедлит появиться. У меня так и вышло:
Терминал предупредил, что хотя система и считывает RTC в текущей зоне (а оно статично и не обновляется), в некоторых регионах оно может сбиваться. Даже попросту врать, причём от сеанса к сеансу. На ум сразу приходила порой выручающая синхронизация часов с мировым временем в Windows. Но тут же предлагается вариант с командой обнулить:
Всё вроде бы встало на свои места:
Однако запись
как раз и утверждает, что система списывает время (по факту) с потолка. Если вас интересует синхронизация с сетью, спускайтесь к абзацу про NTP.
Как установить часы в Кали Линукс с помощью timedatectl?
Если Кали не слушается, и часовой пояс не меняется, его мы сможем всегда отрегулировать в полуавтоматическом режиме. Заглянем в директорию /usr/share/zoneinfo.
Терминал выведет список зон. Ищем подходящую клавишами PageDown и стрелочками вверх/вниз. Моя эта — Europe/Moscow. Копирую и, открыв следующее окно терминала ввожу
Теперь можно проверить уже известной вам командой:
Для включения или выключения сетевой синхронизации можно использовать команды:
Так мы и подобрались к синхронизации с мировым временем.
Синхронизация времени в Кали Линукс: служба NTP.
Особое применение тема нашла у серверных машин и вообще рекомендуется для настольных компьютеров. Чертовски полезно в тех случаях, когда ноутбук под управлением Linux лишён батареи (или та пристёгнута в качестве «мебели»), а у настольного компьютера, к примеру, подсела батарейка питания CMOS на материнской плате. Короче — чтобы установить время в Кали Линукс при помощи NTP вам просто понадобится соединение с интернетом. И только. Network Time Protocol представляет собой протокол UDP/IP синхронизации времени через сетевое соединение. Смысл прост — клиентская машина запрашивает текущее время от нужного сервера, ответ от которого «заводится» в сеанс. Куча серверов службы завязаны в том числе и по GPS, сверяясь в итоге с «атомными» часами, в точности с которыми не поспоришь. Это всё, конечно, просто лишь на словах. Но вся сложность от конечного пользователя скрыта. Так или иначе приведённые выше две команды включат или выключат синхронизацию часов в вашей системе. Если что-то пошло не так, и вы не довольны предыдущими результатами по настройке даты и времени, всегда можно сервис убрать. Не исключено (как ни странно это не прозвучит), что с этих команд и придётся начать работу со NTP-службой:
При этом в Кали автоматически попытается подгрузиться systemd-timesyncd. Не факт, что всё получится. Так что скорректируем синхронизацию через NTP для каждого из будущих сеансов. Для этого включаем поддержку NTP в timesyncd. Заручимся поддержкой серверов проекта NTP Pool Project для России с адресом
Информация по адресам других регионов здесь. А мы продолжаем. В терминале откроем документ
в котором раскомментируем строчку <#NTP=>, введя адрес для региона. Для меня стала актуальной такая строчка:
Сохраняемся через CTRL+S и выходим из редактора. Теперь чтобы ни случилось, Кали Линукс будет сверяться с часами интернета как только вы к нему подключитесь. Подключаемся и мы следующей командой из терминала прямо сейчас:
Как установить время вручную?
Догадываюсь, зачем это может некоторым понадобиться. Да — часы в Кали Линукс можно установить произвольно (придётся, правда, подучить сокращения месяцев на английском):
- Январь — JAN
- Февраль — FEB
- Март — MAR
- Апрель — APR
- Май — MAY
- Июнь — JUNE
- Июль — JULY
- Август — AUG
- Сентябрь — SEPT
- Октябрь — OCT
- Ноябрь — NOV
- Декабрь — DEC
Желаете, чтобы Кали списывала время с системных часов материнской платы? Тогда вот так:
Как установить время в Кали Линукс: tzdata
Не знаю почему забыл об этом способе. Но даже после синхронизации с сетевыми серверами упомяну и о нём. Это быстро. Вводим в терминале команду вызова пакета настройки временной зоны:
Мой пояс располагается в Европе (соглашаемся клавишей TAB и жмём ОК). Теперь выбираем город, сориентированный по конкретной временной зоне. В моём городе она совпадает с Москвой. Соглашаюсь ОК-еем, и в итоге окно терминала провожает меня установленными по умолчанию настройками времени:
Успехов всем.
Синхронизация времени в Ubuntu 18.04
Точное хронометрирование – очень важный аспект корректной работы многих современных программ. Из-за неправильного времени на сервере могут возникнуть ошибки, и данные могут быть повреждены (например, при обновлении БД или логировании).
В Ubuntu 18.04 синхронизация времени встроена и включена по умолчанию; за неё отвечает сервис timesyncd. Данный мануал ознакомит вас с базовыми командами для управления временем, научит проверять состояние timesyncd и устанавливать другие сервисы сетевого времени.
Требования
Для работы вам понадобится сервер Ubuntu 18.04 и пользователь с доступом к sudo (мануал нужно выполнить в сессии этого пользователя). Все необходимые инструкции по настройке вы найдете здесь.
Основные команды для управления временем
date – основная команда для определения времени на сервере. Любой пользователь может использовать её, чтобы узнать дату и время:
date
Tue Jul 10 14:48:52 UTC 2018
Обычно по умолчанию серверы используют часовой пояс UTC (Coordinated Universal Time) – это всемирное координированное время. UTC последовательно устанавливает время на серверах и минимизирует ошибки в случае если сервера инфраструктуры находятся в разных часовых поясах.
Чтобы изменить часовой пояс, используйте команду timedatectl.
Запросите список доступных поясов:
Перемещаться вниз по списку можно с помощью клавиши пробела, а вверх – с помощью b. Выберите часовой пояс, запишите его и нажмите q, чтобы закрыть список.
Теперь установите часовой пояс с помощью timedatectl set-timezone. Используйте следующую команду, указав в ней требуемый часовой пояс:
sudo timedatectl set-timezone America/New_York
Примечание: Вместо America/New_York укажите необходимый часовой пояс.
Убедитесь, что пояс изменился:
date
Tue Jul 10 10:50:53 EDT 2018
Аббревиатура часового пояса будет отражать новое значение.
Управление сервисом timesyncd
До недавнего времени за синхронизацию времени отвечал демон ntpd (Network Time Protocol daemon). Он подключал сервер к пулу серверов NTP, что обеспечивало точное хронометрирование.
Теперь Ubuntu вместо ntpd по умолчанию использует timesyncd. Сервис timesyncd подключается к тем же серверам времени и работает примерно таким же образом, но он легче ntpd и интегрирован с systemd.
Узнать состояние timesyncd позволяет команда timedatectl.
timedatectl
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 отключен, введите:
sudo timedatectl set-ntp on
После этого снова запросите состояние timesyncd. В строках System clock synchronized и systemd-timesyncd.service active должно быть значение yes.
Переход с timesyncd на ntpd
В большинстве случаев сервис timesyncd подходит для работы, но если ваши приложения чувствительны к малейшим колебаниям времени, лучше обслуживать их с помощью ntpd, так как этот демон использует более сложные методы синхронизации системного времени.
Прежде чем установить ntpd, отключите timesyncd:
sudo timedatectl set-ntp no
Убедитесь, что timesyncd отключился:
В выводе должна быть строка:
systemd-timesyncd.service active: no
Теперь можно установить ntp:
sudo apt update
sudo apt install ntp
Демон ntpd запускается автоматически после установки. Запросите состояние ntpd:
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
+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, к которым подключается ntpd. Ваш вывод будет отличаться, но в нём всё равно должен быть стандартный пул Ubuntu и несколько других серверов.
На установку соединения ntpd потребуется несколько минут.
Заключение
Теперь вы умеете управлять системным временем сервера Ubuntu 18.04.
Больше информации можно найти в документации NTP или на сайте проекта NTP Pool.
Синхронизация времени
Синхронизация времени в Linux возможна про протоколу NTP, описанному в RFC 5905, и протоколу TIME, описанному в RFC 868. В настоящее время, в подавляющем большинстве случаев, используется протокол NTP. Кроме того, в случае выключения компьютера, либо его перезагрузки, важна синхронизация системного времени с аппаратными часами реального времени материнской платы компьютера (RTC). В ALT есть несколько пакетов, обеспечивающих синхронизацию по протоколу NTP. Использовать одновременно несколько способов не следует. Так же существует дистрибутивонезависимое MINI-HOWTO на эту тему [1] .
Содержание
tzdata [ править ]
Пакет содержит множество описаний временны́х зон, нужная из которых копируется в /etc/localtime (либо это может быть символическая ссылка на соответствующий файл). Только этот файл определяет системную временну́ю зону. Для дистрибутивов ALT с sysvinit копирование может быть выполнено командой
Сама зона, в этом случае, определяется по значению переменной ZONE из /etc/sysconfig/clock.
NTP [ править ]
пакет openntpd [ править ]
Используется по-умолчанию в большинстве дистрибутивов ALT. Отличается высокой безопасностью и как следствие — некоторыми недостатками, самый неприятный из которых — это медленный старт, доходящий в некоторых случаях до суток. Сам демон имеет название ntpd, как и аналогичный из пакета ntp, однако не является совместимым с ним ни по параметрам запуска, ни по средствам контроля, ни по конфигурационному файлу.
пакет ntp [ править ]
Пакет является эталонной реализацией протокола ntp и имеет долгую историю. Считается не очень безопасным ввиду лидерства по количеству закрытых за историю CVE. В ALT пакет состоит из нескольких подпакетов. Непосредственно к синхронизации имеют отношение два, а третий полезен для контроля состояния ntpd.
ntpd [ править ]
Собственно сам демон, который может работать как в качестве клиента, так и в качестве сервера.
ntpdate [ править ]
Утилита, позволяющая однократно посмотреть время на каком-либо NTP-сервере (не обязательно ntpd) и/или синхронизировать с ним системное время. Если запущен ntpd, требуется использовать ключ -u при запуске.
ntpq [ править ]
Утилита, позволяющая посмотреть статус работающего ntpd, как локального, так и удалённого.
пакет chrony [ править ]
Наименее проблемный сервер времени, умеющих синхронизировать время быстро по списку доверенных серверов.
В некоторых конфигурациях это единственный сервер времени, с которым что-то работает, например, кластеры файловой системы ceph.
пакет systemd-timesyncd [ править ]
Является клиентом SNTP, не может быть сервером NTP.
TIME 868 [ править ]
пакет xinetd [ править ]
Встроенный сервер TIME 868 имеет демон xinetd. Чтобы служба заработала, надо в /etc/xinetd.d/time-tcp и /etc/xinetd.d/time-udp заменить «disable = yes» на «disable = no». Так же, не следует забывать про основной /etc/xinetd.conf, в котором, по-умолчанию, присутствует параметр «only_from = 127.0.0.1».
пакет rdate [ править ]
TIME 868 клиент
пакет netdate [ править ]
TIME 868 клиент
DAYTIME 867 [ править ]
Упоминается в контексте Samba. надо понять и дописать, для чего
Синхронизация системного времени с RTC [ править ]
Linux kernel [ править ]
При наличии синхронизации с NTP-сервером ядро каждые 11 минут обновляет время в RTC. Начиная с 3.10, из ядра выпилили код, который пытался обновлять в RTC только минуты и секунды, чтобы обновление работало независимо от часового пояса (но в этом случае не могло быть исправлено расхождение более чем на 15 минут) [2] . В результате, при использовании синхронизаторов, умеющих сообщать ядру о наличии синхронизации, ядро получило возможность выставить значение RTC в UTC в соответствии с текущим значением времени, что внесло некоторую путаницу.
Проверить, что функция синхронизации может быть активирована, можно посредством команды
пакет hwclock [ править ]
При запуске однократно синхронизирует RTC с системными часами, либо наоборот. В зависимости от параметров в RTC может быть установлено время в UTC, либо локальное. В момент исполнения hwclock создаёт файл /etc/adjtime, в котором записано отклонение RTC от системного времени и какое время (локальное, либо UTC) записано в RTC. При загрузке системное время выставляется относительно RTC по данными из adjtime. Несоответствие значения временной зоны в RTC и в файле adjtime (UTC/LOCAL) приводит к сдвигу системного времени при загрузке. В некоторых случаях (например, при использовании ntpd) можно просто обнулить содержимое /etc/adjtime после использования ( >/etc/adjtime ).
другие ОС [ править ]
Другие ОС тоже могут корректировать значение времени в RTC. Если на компьютере установлено более одной ОС, необходимо производить настройки таким образом, чтобы все ОС корректировали время в RTC одинаковым образом.