В данной статье я расскажу, как настроить время, дату и изменить часовой пояс(timezone) в Linux CentOS, как выполнять синхронизацию времени с NTP сервером и исправить типичные ошибки.
На серверах существует два вида часов. Аппаратные (real time clock), которые работают даже при выключенном сервере и программные часы операционной системы. Показания этих двух часов, могут отличаться. При этом, после запуска операционной системы, программные часы опираются на показания аппаратных и в дальнейшем могут корректироваться системой.
Абсолютное большинство программ в своей работе используют время программных часов.
Чтобы проверить аппаратное время в Linux используется утилита hwclock :
hwclock --localtime
— проверка аппаратного времени без поправки hwclock --utc
– проверка времени с условием, что аппаратные часы идут по времени UTC [root@server etc]# hwclock --localtime
Wed 27 Nov 2019 11:28:28 AM +06 -1.012225 seconds
[root@server etc]# hwclock --utc
Wed 27 Nov 2019 05:28:30 PM +06 -0.045476 seconds
Чтобы установить аппаратное время равное системному времени, выполните команду:
# hwclock --systohc
Чтобы установить конкретное время, выполните:
# hwclock --set --date "27 Nov 2019 17:30"
В Linux за программное время отвечает утилита date или timedatectl . Если вызывать утилиту date без параметров, она покажет текущее время на сервере:
[root@server etc]# date
Wed Nov 27 17:40:56 +06 2019
Если вы хотите выставить время вручную, можно воспользоваться утилитой date с дополнительными ключами:
# date MMDDhhmm
Где MM – месяц, DD — день, hh – час, mm – минуты.
Например:
# date 11261740
Для получения расширенной информации о дате, времени, поясе, синхронизации, настройках перехода на сезонное (летнее/зимнее) время (DST), используется утилита timedatectl . Она дает более подробную информацию о настройках времени на сервере.
Timedatectl также позволяет изменить время:
# timedatectl set-time '2019-11-27 17:51:00'
Чтобы время на сервере CentOS Linux соответствовало вашему часовому поясу, его можно изменить вручную. Для этого есть две утилиты:
Чтобы изменить часовой пояс через утилиту timedatectl , выполните команду:
# timedatectl set-timezone Europe/Moscow
Или же можно использовать tzdata . Чтобы воспользоваться данным методом, нужно заменить файл /etc/localtime на нужный вам. Весь список часовых поясов, расположен в директории /usr/share/zoneinfo/. Заменим часовой пояс на Asia/Almaty . Делаем бэкап файла locatime:
# mv /etc/localtime /etc/localtime.bak
Создаем симлинк на нужный часовой пояс:
# ln -s /usr/share/zoneinfo/Asia/Almaty /etc/localtime
Вы можете настроить автоматическую синхронизацию времени на вашем сервере с внешним NTP (Network Time Protocol) сервером. Для этого нужно установить сервис ntp . Например, в CentOS 7 установка выполняется через yum :
# yum install ntp -y
После установки, нужно запустить сервис ntpd и добавить его в автозагрузку :
# systemctl start ntpd.service
# systemctl enable ntpd.service
Проверим, что сервис запущен:
[root@server Asia]# service ntpd status
Redirecting to /bin/systemctl status ntpd.service_x000D_ ● ntpd.service - Network Time Service_x000D_Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)_x000D_Active: active (running) since Thu 2019-11-28 09:47:33 +06; 5min ago_x000D_Main PID: 3057 (ntpd)_x000D_CGroup: /system.slice/ntpd.service_x000D_└─3057 /usr/sbin/ntpd -u ntp:ntp -g_x000D_
В файле /etc/ntp.conf нужно указать сервера, с которыми нужно синхронизировать время:
server 0.pool.ntp.org_x000D_server 1.pool.ntp.org_x000D_server 2.pool.ntp.org
Синхронизация времени выполняется последовательно. Если недоступен первый NTP сервер, идет обращение ко второму и т.д.
Можно вручную синхронизировать время с указанным NTP сервером командой:
# ntpdate 192.168.1.100
По умолчанию, ntpd включает в системе режим “11 minute mode”, то есть время будет синхронизироваться каждые 11 минут. Если вы не можете использовать демон ntpd , вы можете настроить синхронизацию времени по крону, добавьте в крон следующую команду:
# ntpdate pool.ntp.org
Для CentOS 8 из официальных репозиториев убрали ntp и ntpdate , поэтому для синхронизации времени нужно использовать chrony .
Основные преимущества chrony:
По умолчанию, утилита chrony уже установлена в системе, но если по какой-то причина у вас ее нет, выполните установку:
# dnf install chrony
Как и любой другой сервис, после установки chrony нужно включить и добавить в автозагрузку:
# systemctl start chronyd
# systemctl enable chronyd
Проверим статус сервиса:
Чтобы проверить, что синхронизация работает, выполнитите команду:
# timedatectl status
NTP Service: active
Конфигурационный файл chrony — /etc/chrony.conf . В нем нужно указать список NTP серверов, которые нужно использовать для синхронизации. Как и у ntp , у chrony есть интерфейс командной строки chronyc . Чтобы проверить информацию о текущих параметрах синхронизации времени, используйте:
# chronyc tracking
Чтобы проверить информацию о серверах синхронизации, выполните команду:
# chronyc sources
Если вы хотите установить конкретное время и дату вручную, вы можете воспользоваться утилитой date , но перед этим нужно отключить демон chronyd .
В данном разделе, я опишу частые ошибки, которые возникают при работе с утилитами timedatectl , ntp .
При ручной синхронизации времени, у вас может возникнуть подобная ошибка:
ntpdate [26214]: the NTP socket is in use, exiting
Она означает, что у вас запущен демон ntpd , который блокирует ручную синхронизация времени. Чтобы выполнить ручную синхронизацию, остановите демон ntpd :
# service ntpd stop
И запустите синхронизацию заново:
Аналогичная ошибка может возникать и при работе с утилитой timedatectl:
Failed to set time: Automatic time synchronization is enabled.
Теперь нужно отключить автоматическую синхронизацию в самой утилите timedatectl:
# timedatectl set-ntp 0
И выполнить команду по установке конкретного времени:
При работе с часовыми поясами, они могут быть не установлены у вас на сервере и создать симлинк для localtime не получится. Для того, чтобы в системе были доступны часовые пояса, установите утилиту tzdata :
# yum install tzdata -y
Так при ручной синхронизации, часто бывают ошибки вида:
28 Nov 10:12:39 ntpdate[897482]: sendto(185.217.191.98): Operation not permitted
В этом случае проверьте правила firewalld / iptables , и убедитесь, что у вас на сервере открыт UDP порт 123. Так же некоторые хосты синхронизации могут быть недоступны в момент проверки.
Как менялся логотип Apple на протяжении многих лет. Логотип Apple — это не просто символ,…
Security Boot Fail при загрузке Acer — решение проблемы При загрузке ноутбука Acer с флешки,…
Ноутбук не включается — варианты решения Если при попытке включить ноутбук вы обнаруживаете, что он…
The AC power adapter wattage and type cannot be determined — причины и решение При…
Свистит или звенит блок питания компьютера — причины и решения Некоторые владельцы ПК могут обратить…
Мигает Caps Lock на ноутбуке HP — почему и что делать? При включении ноутбука HP…