Синхронизация времени Centos 7

Обновлено: 21.11.2024

Правильное синхронизированное системное время имеет решающее значение для анализа файла журнала в нескольких системах. Протокол сетевого времени (NTP) — это стандартный способ для машин предоставлять и получать правильную информацию о времени в Интернете. Машина может получать точную информацию о времени от общедоступных служб NTP в Интернете, таких как проект пула NTP. Еще одним вариантом являются высококачественные аппаратные часы, которые будут показывать точное время локальным клиентам.

Команда timedatectl показывает обзор текущих системных настроек, связанных со временем, включая текущее время, часовой пояс и настройки синхронизации NTP в системе.

Доступна база данных часовых поясов, список которых можно просмотреть с помощью команды timedatectl list-timezones.

Имена часовых поясов основаны на общедоступной базе данных часовых поясов, которую поддерживает IANA. Часовые пояса называются в зависимости от континента или океана, а затем обычно, но не всегда, самого большого города в регионе часового пояса. Например, большая часть горного часового пояса США — Америка/Денвер. Выбор правильного имени может быть неинтуитивным в случаях, когда в населенных пунктах внутри часового пояса действуют разные правила перехода на летнее время. Например, в США большая часть штата Аризона (горное время США) вообще не имеет перевода на летнее время и находится в часовом поясе Америка/Феникс.

Команда tzselect полезна для определения правильных названий часовых поясов zoneinfo. Он в интерактивном режиме задает пользователю вопросы о местоположении системы и выводит название правильного часового пояса. Это не вносит никаких изменений в настройку часового пояса системы. Суперпользователь может изменить системные настройки для обновления текущего часового пояса с помощью команды timedatectl set-timezone. Следующая команда timedatectl обновляет текущий часовой пояс до America/Phoenix:

Примечание. Если вам нужно использовать всемирное координированное время (UTC) на определенном сервере, установите для него часовой пояс UTC. Команда tzselect не включает имя часового пояса UTC. Используйте команду timedatectl set-timezone UTC, чтобы установить текущий часовой пояс системы на UTC.

Используйте команду timedatectl set-time, чтобы изменить текущее системное время. Время указывается в формате «ГГГГ-ММ-ДД чч:мм:сс», где дата или время могут быть опущены. Следующая команда timedatectl изменяет время на 09:00:00.

Команда timedatectl set-ntp включает или отключает синхронизацию NTP для автоматической настройки времени. Опция требует аргумента true или false, чтобы включить или выключить ее. Следующая команда timedatectl включает синхронизацию NTP.

Примечание. В CentOS/RHEL 7 и 8 команда timedatectl set-ntp определяет, работает ли служба chronyd NTP. Другие дистрибутивы Linux могут использовать этот параметр для настройки другой службы NTP или SNTP. Включение или отключение NTP с помощью других утилит в CentOS/RHEL, например в графическом приложении настроек GNOME, также обновляет этот параметр.

В этой статье мы покажем вам, как установить время, дату, часовой пояс, синхронизировать время с NTP-сервером и исправить типичные проблемы в CentOS Linux.

На серверах есть два типа часов: аппаратные (часы реального времени), которые работают, даже если сервер выключен, и программные часы операционной системы. Время на этих часах может отличаться. После запуска операционной системы программные часы основаны на аппаратных часах и могут корректироваться операционной системой.
Большинство приложений используют в своей работе программные часы.

Hwclock: конфигурация аппаратного времени

Hwclock используется для проверки аппаратного времени в Linux:

  • hwclock --localtime — проверить аппаратное время без коррекции
  • hwclock --utc — отображает время, если аппаратные часы показывают время UTC

Ручная настройка времени в CentOS

В Linux инструменты date или timedatectl используются для проверки и установки программного времени. Если вы вызовете дату без каких-либо параметров, она покажет текущее время на вашем сервере:

Если вы хотите установить время вручную, вы можете использовать дату с дополнительными параметрами:

Для получения расширенной информации о дате, времени, часовом поясе, настройках синхронизации, настройках летнего времени (DST) используется timedatectl. Он дает более подробную информацию о настройках времени на сервере.

Timedatectl также позволяет изменять время:

Как установить часовой пояс в CentOS?

Чтобы установить время в соответствии с вашим часовым поясом на CentOS Linux, вы можете изменить его вручную. Для этого вы можете использовать два инструмента:

Чтобы изменить часовой пояс с помощью timedatectl, выполните следующую команду:

Или вы можете использовать tzdata. Чтобы использовать этот метод, замените файл /etc/localtime на нужный вам. Весь список часовых поясов находится в каталоге /usr/share/zoneinfo/. Давайте изменим часовой пояс на Канаду/Тихоокеанский регион. Создайте резервную копию текущего файла местоположения:

Настройка CentOS для синхронизации времени с серверами времени NTP

Вы можете настроить автоматическую синхронизацию времени на своем хосте с внешним сервером NTP (Network Time Protocol). Для этого необходимо установить службу ntp. Например, вы можете установить его с помощью yum в CentOS 7:

После установки запустите службу ntpd и добавьте ее в автозагрузку:

Убедитесь, что служба запущена:

Укажите серверы NTP для синхронизации времени в файле /etc/ntp.conf:

Время синхронизируется по очереди. Если первый NTP-сервер недоступен, используется второй и т. д.

Вы можете вручную синхронизировать время с указанным NTP-сервером с помощью этой команды:

По умолчанию ntpd включает «11-минутный режим». Это означает, что время будет синхронизироваться каждые 11 минут. Если вы не можете использовать демон ntpd, вы можете настроить синхронизацию времени с помощью cron. Добавьте в cron следующую команду:

Как синхронизировать время в CentOS 8 с помощью Chronyd?

В CentOS 8 вам придется использовать chrony для синхронизации времени, так как ntp и ntpdate были удалены из официальных репозиториев.

  • Высокая скорость и точность синхронизации времени;
  • Правильная работа, если у вас нет доступа к основным часам (ntpd требует регулярных запросов);
  • По умолчанию время не изменяется сразу после синхронизации, чтобы предотвратить проблемы с запуском программ.
  • Использует меньше ресурсов.

По умолчанию хрони уже установлен в CentOS Linux, но если по какой-то причине у вас его нет, установите его:

Как и любой другой сервис, chrony нужно запустить и добавить в автозагрузку после установки:

Проверьте статус службы chronyd:

Чтобы убедиться, что синхронизация времени работает, выполните следующую команду:

Файл конфигурации Chrony — /etc/chrony.conf. Укажите список серверов NTP, которые вы хотите использовать для синхронизации. Как и ntp, chrony имеет интерфейс командной строки: chronyc. Чтобы просмотреть информацию о текущих параметрах синхронизации времени, выполните следующую команду:

Чтобы просмотреть информацию о серверах синхронизации:

Если вы хотите установить конкретную дату и время вручную, вы можете использовать дату, но предварительно отключив демон chronyd.

Распространенные проблемы с синхронизацией времени в CentOS

В этом разделе я опишу типичные ошибки, возникающие при работе с timedatectl, ntp.

Во время ручной синхронизации времени вы можете столкнуться с этой ошибкой:

Это означает, что демон ntpd запущен и препятствует ручной синхронизации времени. Чтобы синхронизировать время вручную, остановите демон ntpd:

И снова запустите синхронизацию.

Такая же ошибка может возникать при работе с timedatectl:

Вы должны отключить автоматическую синхронизацию в timedatectl:

И запустите эту команду, чтобы установить нужные время и дату:

При работе с часовыми поясами может случиться так, что они не установлены на вашем сервере и вы не сможете создать символическую ссылку для местного времени. Чтобы сделать часовые пояса доступными на вашем хосте, установите инструмент tzdata:

Кроме того, во время ручной синхронизации вы можете столкнуться с некоторыми ошибками, такими как следующая:

В этом случае проверьте правила firewalld/iptables и убедитесь, что на вашем сервере открыт UDP-порт 123. Кроме того, некоторые хосты NTP могут быть недоступны во время проверки.

Поэтому, когда вы запускаете свою машину, первые часы, которые ваша машина использует для хронометража, — это аппаратные часы, пока ОС загружается, системные часы получают свое время от аппаратных часов. После этого время системных часов поддерживается операционной системой.

Вы можете посмотреть аппаратные часы с помощью команды hwclock:

Вы можете просмотреть время ОС с помощью команды timedatectl или date:

Команда date мало что делает, но она полезна для вывода даты и времени в разных форматах.

Затем вы можете вручную изменить время системных часов с помощью команды timedatectl:

Установка часового пояса

Timedatecl показывает, какой часовой пояс установлен на машине:

Однако, если вы хотите изменить это, сначала используйте команду tzselect.Эта команда представляет собой интерактивный инструмент, который определяет, как называется ваш часовой пояс. Получив имя, вы можете установить часовой пояс с помощью команды timedatectl:

Синхронизация времени

Очень важно, чтобы часы вашей системы были максимально точными, чтобы обеспечить бесперебойную работу вашего компьютера. Вы можете поддерживать точность часов вашего устройства с помощью NTP (протокола сетевого времени). Доступны 2 основных пакета NTP:

  • ntp — рекомендуется для машин, которые постоянно подключены к сети и обычно работают круглосуточно и без выходных.
  • chrony — рекомендуется для машин, которые не работают круглосуточно и без выходных или имеют прерывистую сеть, например. мобильные телефоны. Также хорошо работает на компьютерах, которые постоянно подключены к сети и обычно работают круглосуточно и без выходных.

Оба они выполняют одну и ту же работу, а именно синхронизируют время системы с другим источником эталонного времени. Вы не должны использовать оба. chrony является преемником ntp и предустановлен в CentOS/RHEL 7.

Установить ntp

Вот команда, которую вам нужно выполнить:

Вы также можете использовать timedatectl, чтобы заставить вашу ОС точно поддерживать правильное время, синхронизируя его с другим доверенным удаленным сервером «ntp». Это делается с помощью следующей команды:

Мы можем просмотреть список доверенных ntp-серверов, которые chronyd использует для синхронизации системного времени. Вы можете просмотреть этот список с помощью команды chronyc:

(Обратите внимание, эквивалентом этой команды в ntpd является ntpq -p ). Звездочка указывает, какой сервер используется в качестве основного. Основной NTP-сервер может меняться каждые несколько минут в зависимости от внутреннего алгоритма chronyd. Чтобы получить больше информации о нашем статусе ntp, мы запускаем:

(Обратите внимание, эквивалентом этой команды в ntpd является ntpstat .) Это показывает, насколько эффективно наша служба ntp поддерживает синхронизацию времени с удаленным сервером ntp. Основной файл конфигурации для нашего сервиса chronyd:

Если ваши системные часы верны, но ваши аппаратные часы неверны, вы можете обновить аппаратные часы с помощью команды hwclock:

Кроме того, чтобы обновить системные часы, чтобы они оставались синхронизированными со временем, предоставленным демоном chronyd/ntpd, мы запускаем:

затем за кулисами он запустит/остановит службу chronyd:

У службы chronyd есть собственный файл конфигурации:

Однако маловероятно, что вам потребуется вносить какие-либо изменения в этот файл, так как основной способ настройки системных часов — использование команды timedatectl. Единственное, что вам может понадобиться здесь настроить, это добавить/удалить серверы ntp.

О советах по работе

AWS предоставляет специальный бесплатный сервис AWS NTP для своих инстансов EC2. Это позволяет вашим экземплярам ec2 не подключаться к Интернету для синхронизации времени.

Тест RHCSA

К концу этой статьи вы должны быть в состоянии ответить на следующие вопросы:

У меня есть машина с CentOS, и каждый раз я замечал, что сервер через некоторое время теряет правильное время. Обычно он отстает на несколько минут по истечении времени из-за ручной установки правильного времени. Есть ли механизм, с помощью которого я могу обновить сервер, указав время с определенного сервера времени?

9 ответов 9

Используйте демон ntp. Запустите yum install ntp и убедитесь, что служба запущена через ntsysv или chkconfig ntpd на .

@ewhite Я сделал yum, и он показывает, что он уже установлен. так каким должен быть мой следующий шаг? Как настроить время так, чтобы оно указывало на ntp-сервер?

@ewwhite Другим решением является запуск ntpdate -b -u time.nist.gov, который попытается использовать порт, отличный от используемого демоном ntpd.

Необходимо установить и настроить ntp.

должны все настроить и запустить. Вы можете обнаружить, что пакет ntp уже установлен и его нужно только настроить.

Если изменяемый компьютер не является ВМ, то я hwclock -w после команды ntpdate. Это означает, что при следующей перезагрузке компьютера ваши часы будут меньше рассинхронизированы, чем сейчас.

@lain Я уже проверил установку, но что нужно настроить, чтобы указать на ntp-сервер и сохранить синхронизацию?

Выполните первоначальную синхронизацию с

и запустите демон времени с помощью:

Вам потребуется настроить ntpd для сервера. Я подозреваю, что он уже установлен, но его нужно настроить. Примечание. Если это виртуальный сервер, у вас, вероятно, есть возможность синхронизации с виртуальным хостом.

Для установки Centos 7.x:

начальная синхронизация с:

запустите демон командой:

В системах CentOS 7 по умолчанию используется хронология, поэтому, если вы хотите переключить клиентов NTP, вам следует сначала отключить или удалить хронологию перед установкой ntpd.

@Unicornist Вы гарантированно получите хронию только при установке с официального носителя CentOS. Если кто-то другой выполнит установку за вас или вы используете пользовательский носитель, вы можете не получить его.

Ntpd делает именно то, что вам нужно — синхронизирует ваши системные часы с одним или несколькими заведомо исправными серверами времени.

В основном есть два способа. Демон NTP и команда ntpdate. Самое важное отличие состоит в том, что ntpdate синхронизирует время сразу, даже если это означает, что системное время изменится. С другой стороны, демон NTP позаботится о синхронизации времени и будет регулировать время небольшими шагами — вы можете думать об этом как о замедлении/ускорении времени компьютера, чтобы синхронизировать его с правильным временем. Вот почему люди предлагают выполнить первоначальную синхронизацию с помощью ntpdate, а затем оставить ее демону ntp.

Да, я бы использовал NTP, установил ntp с yum и включил его.

Затем синхронизируйте его с любым сервером ntp, который вам нравится, с помощью команды ntpdate

Также, если вы используете CPanel, как я, и у меня была эта проблема. Я думаю, используя rdate. Переход на ntpd, как указано выше, устраняет все проблемы с электронной почтой, особенно dovecot и т. д.

Читайте также: