CentOS: Настройка даты и времени, пояса, синхронизация с NTP
В данной статье я расскажу, как настроить время, дату и изменить часовой пояс(timezone) в Linux CentOS, как выполнять синхронизацию времени с NTP сервером и исправить типичные ошибки.
На серверах существует два вида часов. Аппаратные (real time clock), которые работают даже при выключенном сервере и программные часы операционной системы. Показания этих двух часов, могут отличаться. При этом, после запуска операционной системы, программные часы опираются на показания аппаратных и в дальнейшем могут корректироваться системой.
Абсолютное большинство программ в своей работе используют время программных часов.
Hwclock: настройка аппаратного (системного) времени
Чтобы проверить аппаратное время в Linux используется утилита hwclock:
Чтобы установить аппаратное время равное системному времени, выполните команду:
Чтобы установить конкретное время, выполните:
Ручная настройка времени в CentOS
В Linux за программное время отвечает утилита date или timedatectl. Если вызывать утилиту date без параметров, она покажет текущее время на сервере:
[root@server etc]# date
Если вы хотите выставить время вручную, можно воспользоваться утилитой date с дополнительными ключами:
Где MM – месяц, DD — день, hh – час, mm – минуты.
Для получения расширенной информации о дате, времени, поясе, синхронизации, настройках перехода на сезонное (летнее/зимнее) время (DST), используется утилита timedatectl. Она дает более подробную информацию о настройках времени на сервере.
Timedatectl также позволяет изменить время:
# timedatectl set-time ‘2019-11-27 17:51:00’
Настройка часового пояса в CentOS
Чтобы время на сервере CentOS Linux соответствовало вашему часовому поясу, его можно изменить вручную. Для этого есть две утилиты:
Чтобы изменить часовой пояс через утилиту timedatectl, выполните команду:
# timedatectl set-timezone Europe/Moscow
Или же можно использовать tzdata. Чтобы воспользоваться данным методом, нужно заменить файл /etc/localtime на нужный вам. Весь список часовых поясов, расположен в директории /usr/share/zoneinfo/. Заменим часовой пояс на Asia/Almaty. Делаем бэкап файла locatime:
# mv /etc/localtime /etc/localtime.bak
Создаем симлинк на нужный часовой пояс:
Настройка синхронизация времени по NTP в CentOS
Вы можете настроить автоматическую синхронизацию времени на вашем сервере с внешним NTP (Network Time Protocol) сервером. Для этого нужно установить сервис ntp. Например, в CentOS 7 установка выполняется через yum:
После установки, нужно запустить сервис ntpd и добавить его в автозагрузку:
# systemctl start ntpd.service
# systemctl enable ntpd.service
Проверим, что сервис запущен:
[root@server Asia]# service ntpd status
В файле /etc/ntp.conf нужно указать сервера, с которыми нужно синхронизировать время:
Синхронизация времени выполняется последовательно. Если недоступен первый NTP сервер, идет обращение ко второму и т.д.
Можно вручную синхронизировать время с указанным NTP сервером командой:
По умолчанию, ntpd включает в системе режим “11 minute mode”, то есть время будет синхронизироваться каждые 11 минут. Если вы не можете использовать демон ntpd, вы можете настроить синхронизацию времени по крону, добавьте в крон следующую команду:
Используем chronyd для синхронизация времени в CentOS 8
Для CentOS 8 из официальных репозиториев убрали ntp и ntpdate, поэтому для синхронизации времени нужно использовать chrony.
Основные преимущества chrony:
По умолчанию, утилита chrony уже установлена в системе, но если по какой-то причина у вас ее нет, выполните установку:
# dnf install chrony
Как и любой другой сервис, после установки chrony нужно включить и добавить в автозагрузку:
# systemctl start chronyd
# systemctl enable chronyd
Проверим статус сервиса:
Чтобы проверить, что синхронизация работает, выполнитите команду:
Конфигурационный файл chrony — /etc/chrony.conf. В нем нужно указать список NTP серверов, которые нужно использовать для синхронизации. Как и у ntp, у chrony есть интерфейс командной строки chronyc. Чтобы проверить информацию о текущих параметрах синхронизации времени, используйте:
Чтобы проверить информацию о серверах синхронизации, выполните команду:
Если вы хотите установить конкретное время и дату вручную, вы можете воспользоваться утилитой date, но перед этим нужно отключить демон chronyd.
Распространённые ошибки при настройке времени в CentOS
В данном разделе, я опишу частые ошибки, которые возникают при работе с утилитами timedatectl, ntp.
При ручной синхронизации времени, у вас может возникнуть подобная ошибка:
Она означает, что у вас запущен демон ntpd, который блокирует ручную синхронизация времени. Чтобы выполнить ручную синхронизацию, остановите демон ntpd:
И запустите синхронизацию заново:
Аналогичная ошибка может возникать и при работе с утилитой timedatectl:
Теперь нужно отключить автоматическую синхронизацию в самой утилите timedatectl:
# timedatectl set-ntp 0
И выполнить команду по установке конкретного времени:
При работе с часовыми поясами, они могут быть не установлены у вас на сервере и создать симлинк для localtime не получится. Для того, чтобы в системе были доступны часовые пояса, установите утилиту tzdata:
Так при ручной синхронизации, часто бывают ошибки вида:
В этом случае проверьте правила firewalld / iptables, и убедитесь, что у вас на сервере открыт UDP порт 123. Так же некоторые хосты синхронизации могут быть недоступны в момент проверки.
Установка и настройка NTP-сервера на Linux CentOS 8
Сервер синхронизации времени NTP помогает актуализировать время на всех узлах сети. В инструкции рассказано о его установке и настройке на Linux CentOS 8.
Установка сервера
В CentOS 8 пакетом для синхронизации времени является chrony — он пришел на смену ntpd.
Устанавливаем его командой:
dnf install chrony
Разрешаем автозапуск и стартуем сервис:
Настройка NTP
Открываем файл с настройками:
Настраиваем серверы, с которых наш NTP будет брать эталонное время. Например:
#pool 2.centos.pool.ntp.org iburst
server 192.168.0.100 iburst prefer
server 192.168.0.110 iburst
server 127.127.1.0
* в данном примере мы закомментировали указанный пул по умолчанию и добавили свои серверы 192.168.0.100 и 192.168.0.110.
* в данном примере мы разрешаем синхронизацию времени с нашим сервером для узлов сети 192.168.0.0/255.255.255.0.
systemctl restart chronyd
Добавляем правило в брандмауэр:
Тестирование
Проверить состояние получения эталонного времени можно командой:
Мы должны увидеть, примерно, следующее:
Отобразить текущее время можно командой:
Для настройки часового пояса применяем команду:
timedatectl set-timezone Europe/Moscow
* московское время (GMT+3).
Проверить отдачу времени сервером можно введя команду на другом Linux:
* где 192.168.0.15 — адрес нашего NTP-сервера.
Правильный ответ имеет следующий вид:
ntpdate[3576]: adjust time server 192.168.0.15 offset 0.017657 sec
* время было рассинхронизировано на 0.017657 секунд.
Настройка клиента Linux
Для клиентов можно выбрать несколько стратегий настройки — мы рассмотрим 3:
Chrony
Команда для установки зависит от типа дистрибутива Linux.
apt-get install chrony
yum install chrony
После установки открываем /etc/chrony.conf:
. и в качестве сервера оставляем только наш локальный сервер, например:
server 192.168.156.215 iburst
Разрешаем автозапуск сервиса:
systemctl enable chronyd || systemctl enable chrony
systemctl restart chronyd || systemctl restart chrony
Centos как узнать время
Добрый день уважаемые читатели и гости блога pyatilistnik.org, продолжаем изучать админские операционные системы, в частности CentOS. В прошлый раз мы ее установили и подробнейшим образом познакомились с ее файловой структурой и общими элементами управления. Азы изучены, двигаемся к реальной практике, очень часто бывает ситуация, что в момент установки вы не правильно указали дату или время, либо ваши системные часы отстают получая не правильное время с NTP сервера, вот в таких моментах вам может потребоваться умение устанавливать, менять дату и время на CentOS 7.
На что влияет время в CentOS 7
Я хочу до вас донести, для чего нужно иметь всегда актуальное время на сервере.
Как установить, изменить время и часовой пояс в CentOS 7
В данном пункте вы можете настроить:
По умолчанию, все данные будут браться из BIOS компьютера, очень часто системные администраторы этот этап пропускают или ошибаются в настройке, встречал я еще интересные случаи, когда сервера заказывались в аренду за рубежом и там система была предустановлена, и естественно там была другая дата, часовой пояс и время. Так, что учимся все это исправлять.
Синтаксис и настройка времени в CentOS 7
Первый раз попав на сервер, я вам советую выработать привычку вводить команду timedatectl. Обратите внимание, что тут есть все данные о времени, дате с учетом часового пояса и без него, сам часовой пояс, в моем примере это GMT, показан NTP сервер, статус синхронизации.
Теперь у вас на выбор два метода, утилитой date или timedatectl.
Установка даты с помощью date
Посмотрим команду date.
Теперь предположим, что вам нужно быстро все исправить и задать правильную дату и время, формат команды date будет иметь вот такой вид:
Я например, хочу дату 04 июня 10:00 2017
Если вам необходимо получить информацию о времени, без учета часового пояса, то есть ключ UTC. В выводе видим время относительно нулевого меридиана, без поправок на часовой пояс.
Установка даты с помощью timedatectl
Тут все так же просто, есть синтаксис timedatectl set-time ‘YYYY-MM-DD HH:MM:SS’
Все дату и время мы настроили, давайте зададим правильный часовой пояс.
Установка и настройка часового пояса в CentOS 7
Для того, чтобы задать нужный вам часовой пояс в операционной системе CentOS 7, есть два метода.
Утилита timedatectl
Что хорошо, ее можно сразу использовать из коробки. И так как помните у меня часовой пояс GMT это +0, я хочу изменить на Москву, это +3. Для начала посмотрим доступный список часовых поясов в Centos, делается это ключомlist-timezones.
Список будет огромный, поэтому сделаем фильтрацию по европе.
Нахожу тут Europe / Moscow, то что мне и нужно.
Далее его задаем, командой;
Как видите, все прекрасно поменялось.
Утилита tzdata
В CentOS 7, все настройки о часовых поясах, хранятся файле /etc/localtime и способ с использованием утилиты tzdata, заключается в том, чтобы его подменить на нужный.
Делаем резервную копию файла localtime, командой:
Устанавливаем пакет tzdata
Посмотрим список часовых поясов в папке /usr/share/zoneinfo/
Теперь, когда основной файл localtime мы переименовали, можем за место него сделать символическую ссылку из папки /usr/share/zoneinfo/.
Все на этом настройка времени, даты и часового пояса закончена. Но мы же с вами не обезьянки делать постоянно одну и туже работу, поэтому давайте настроим синхронизацию с NTP сервером.
Настройка времени и даты в CentOS
Введение
При работе в сети синхронизация времени и даты это важный фактор увеличивающий стабильность и безопасность работы всех систем.
Узнать текущее системное время
Узнать текущее системное время можно командой date
Узнать текущее время BIOS
Узнать текущее системное время BIOS можно командой hwclock
date и hwclock могут показывать совершенно разное время
Исправить текущее время
Сначала нужно задать время командой date
date MM DD hh mm CCYY.ss
| MM | две цифры текущего месяца (пример: январь=01); |
| DD | две цифры текущей даты (если текущий календарный день 1, то пишется 01); |
| hh | две цифры обозначающие час |
| mm | две цифры обозначающие минуты |
| CCYY | четыре цифры года |
| ss | две цифры секунд |
Также можно вводить «date MMDDhhmmCCYY» без секунд, тогда секунды выставляются на ноль.
После выполнения date нужно внести новое установленное время в BIOS:
Теперь осталось только проверить сохранились ли изменения
Синхронизация с ntp
Проверьте установлен ли ntp командой
Если ntp не установлен выполните
sudo yum install ntp
Проверьте запускается ли ntpd автоматически командой
systemctl list-unit-files | grep ntpd.s
Если ntpd неактивен (disabled) выполните
systemctl start ntpd
systemctl enable ntpd
Проверить добавлен ли сервис ntp в зону public в firewall можно командой
Если ещё не добавле, то чтобы разрешить UDP траффик от ntp выполните
Отредактируйте файл ntp.conf с настройками сервера
Найдите свою временную зону на сайте www.ntppool.org
Я нашёл зону Helsinki и добавляю строки
server 0.fi.pool.ntp.org server 1.fi.pool.ntp.org server 2.fi.pool.ntp.org server 3.fi.pool.ntp.org
Теперь нужно перезапустить ntpd
systemctl restart ntpd
Проверить откуда берётся время можно командой
Выставить время BIOS по только что полученному времени можно командой
Настройка времени на Linux сервере CentOS
Покупая, а точнее арендуя, сервер за границей (у зарубежного хостинг-провайдера), Вы наверняка сталкивались с ситуацией, что время на нем не совпадает с вашим. Особенно если вы не устанавливали операционную систему самостоятельно, а развертывали ее из предлагаемого хостером образа. Как правило оно идет по времени дата-центра или по гринвичу. По-совести говоря не принципиально в каком часовом поясе сервер, и что показывают часы. Их показания всегда можно скорректировать. Но, согласитесь, что гораздо приятней, когда сервер находится в вашей временной зоне и/или в зоне большинства посетителей вашего сайта.
В этой статье на примере CentOS (red hat linux) я покажу как удаленно изменить время на сервере с операционной системой Linux. Она будет полезна всем кто администрирует Linux server.
Какие часы бывают в Linux
Немного теории. В любом компьютере есть два вида часов. Одни аппаратные (ЧРВ — часы реального времени или RTC — real time clock), которые работают даже при выключенном блоке питания, на это у них есть батарейка на материнской плате. Другие программные, то есть часы операционной системы. Показания этих часов могут различаться. При этом программные часы опираются на показания аппаратных при старте операционной системы. А в дальнейшем могут синхронизироваться через интернет с эталонными и корректировать ход аппаратных.
В большинстве случаев если компьютер работает под управлением операционной системой Windows показания аппаратных и программных часов совпадают. В linux же чаще всего аппаратные часы настраивают по гринвичу (времени нулевого меридиана), а программные по необходимому смещению для часового пояса где расположен сервер.
Абсолютное большинство программ (приложений и сервисов) в своей работе опираются на показания системных (программных) часов.
Для чего нужно корректировать часы
Как настроить время вашего сервера
Проверим, что показывают аппаратные часы, для чего будем использовать три варианта команды hwclock:
Приведенный пример для случая когда аппаратные часы идут по UTC, а сервер настроен на Московский часовой пояс. Особых пояснений требует опция —utc вывод времени производится (формируется) с условием, что аппаратные часы идут по времени UTC. То есть показания должны совпадать с желаемым временем на сервере. Опция же —localtime наоборот показывает время аппаратных часов без всяких поправок.
Несколько полезных команд установки времени аппаратных часов
Устанавливаем время аппаратных часов равное системному:
Устанавливаем время системных часов на основании ЧРВ:
Устанавливаем время равное указанному:
Значение временной зоны
Данные временной зоны для аппаратных часов в Centos хранятся в файле /etc/sysconfig/clock.
Для московской временной зоны в случае когда аппаратные часы идут по UTC он имеет следующее содержимое:
Где ZONE — это наш часовой пояс, UTC говорит о том, что аппаратные часы сервера идут по универсальному времени UTC, ARC в значении false — значит используется нормальное значение века (эпохи) UNIX.
Подробнее по конфигурации файла /etc/sysconfig/clock в CentOS можно почитать в официальной документации.
Системные часы операционной системы CentOS
Для системных (программных) часов CentOS используется команда date.
Приведенный пример для случая когда операционная система использует Московский часовой пояс. Здесь опция —utc говорит, что необходимо показать время нулевого меридиана, то есть без поправок на часовой пояс.
Изменение временной зоны (часового пояса) в CentOS
Для изменения времени системных часов, если их показания не соответствуют необходимому региону, необходимо проделать следующие нехитрые операции.
В начале, сделаем резервную копию существующего файла временной зоны (часового пояса).
Это хорошая практика, когда вы делаете резервные копии оригинальных файлов конфигурации 🙂
Затем, создаем ссылку на необходимую временную зону.
где Europe/Moscow необходимая временная зона. Полный список доступных часовых поясов смотрим в каталоге /usr/share/zoneinfo/.
При необходимости можно установить значение времени вручную:
где MM – месяц, DD – день, hh – час, mm – минуты.
То есть чтобы задать, к примеру, 18 марта 20 часов 15 минут, нужно ввести следующее:
Более подробно о команде date, можно почитать в мануале, выполнив команду:
Настройка сервера времени ntp
Со временем часы могут убегать или отставать, поэтому время от времени их нужно синхронизировать с эталонными. Для этого в CentOS используется демон ntpd.
Установим демон ntpd если его нет в системе:
Однократно синхронизируем время:
Если получили что-то вроде the NTP socket is in use, exiting — значит ntpd демон уже запущен. В этом случае остановим его:
Настраиваем работу ЧРВ в BIOS на время по UTC:
Этой командой мы присвоили значение времени аппаратных часов равным системному времени. Как вы помните, системные часы мы синхронизировали командами выше.
Проверим содержимое файла /etc/sysconfig/clock чтобы система после загрузки правильно выставляла местное время. Для Москвы он должен содержать следующее:
Настраиваем демон ntpd на автозагрузку при старте операционной системы:
Запускаем демон синхронизации времени:
Проверяем системное время командой:



























