У даній статті я розповім, як налаштувати час, дату і змінити часовий пояс (timezone) в Linux CentOS, як виконувати синхронізацію часу з NTP сервером і виправити типові помилки.

На серверах існує два види годин. Апаратні (real time clock), які працюють навіть при вимкненому сервері і програмні годинник операційної системи. Показання цих двох годин, можуть відрізнятися. При цьому, після запуску операційної системи, програмні годинник спираються на свідчення апаратних і надалі можуть коригуватися системою.

Абсолютна більшість програм в своїй роботі використовують час програмних годин.

Hwclock: настройка апаратного (системного) часу

Щоб перевірити апаратне час в Linux використовується утиліта годинник:

  • 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"

hwclock в Linux centos - -

Ручна настройка часу в CentOS

У Linux за програмне час відповідає утиліта дата або timedatectl. Якщо викликати утиліту дата без параметрів, вона покаже поточний час на сервері:

[root@server etc]# date

Wed Nov 27 17:40:56 +06 2019

Якщо ви хочете виставити час вручну, можна скористатися утилітою дата з додатковими ключами:

# date MMDDhhmm

Де MM – місяць, DD – день, hh – годину, mm – хвилини.

наприклад:

# date 11261740

date - змінити дату / час в centos

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

timedatectl -текщіе настройки часу

Timedatectl також дозволяє змінити час:

# timedatectl set-time '2019-11-27 17:51:00'

timedatectl встановлений час

Налаштування часового поясу в CentOS

Щоб час на сервері CentOS Linux відповідало вашому часовому поясу, його можна змінити вручну. Для цього є дві утиліти:

Щоб змінити часовий пояс через утиліту timedatectl, Виконайте команду:

# timedatectl set-timezone Europe/Moscow

timedatectl set-timezone змінити часовий пояс в linux centos

Або ж можна використовувати тздата. Щоб скористатися даним методом, потрібно замінити файл / etc / localtime на потрібний вам. Весь список часових поясів, розташований в директорії / usr / share / zoneinfo /. Замінимо часовий пояс на Азія / Алмати. Робимо бекап файлу locatime:

# mv /etc/localtime /etc/localtime.bak

Створюємо симлінк на потрібний часовий пояс:

# ln -s /usr/share/zoneinfo/Asia/Almaty /etc/localtime

/ Etc / localtime - пааметри часового поясу

Налаштування синхронізація часу по NTP в CentOS

Ви можете налаштувати автоматичну синхронізацію часу на вашому сервері із зовнішнім 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
● ntpd.service - Network Time Service
Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2019-11-28 09:47:33 +06; 5min ago
Main PID: 3057 (ntpd)
CGroup: /system.slice/ntpd.service
└─3057 /usr/sbin/ntpd -u ntp:ntp -g

У файлі /etc/ntp.conf потрібно вказати сервера, з якими потрібно синхронізувати час:

server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org

Синхронізація часу виконується послідовно. Якщо недоступний перший NTP сервер, йде звернення до другого і т.д.

Можна вручну синхронізувати час із зазначеним NTP сервером командою:

# ntpdate 192.168.1.100

За замовчуванням, ntpd включає в системі режим “11 minute mode”, тобто час буде синхронізуватися кожні 11 хвилин. Якщо ви не можете використовувати демон ntpd, Ви можете налаштувати синхронізацію часу по крону, додайте в крон наступну команду:

# ntpdate pool.ntp.org

Використовуємо chronyd для синхронізація часу в CentOS 8

Для CentOS 8 з офіційних репозиторіїв прибрали ntp і ntpdate, Тому для синхронізації часу потрібно використовувати хронічність.

Основні переваги chrony:

  • висока швидкість і точність сінхронізціі
  • коректна робота при відсутності доступу до еталонних годин (ntpd потрібні регулярні запити)
  • по-замовчуванню не змінює відразу час при синхронізації, щоб не порушити роботу програм
  • Менше використовує ресурсів

За замовчуванням, утиліта хронічність вже встановлена ​​в системі, але якщо з якоїсь причина у вас її немає, виконайте установку:

# dnf install chrony

Як і будь-який інший сервіс, після установки chrony потрібно включити і додати в автозавантаження:

# systemctl start chronyd
# systemctl enable chronyd

Перевірити стан обслуговування:

systemctl start chronyd в centos

Щоб перевірити, що синхронізація працює, виполнітіте команду:

# timedatectl status

NTP Service: active

timedatectl статус Служба NTP: активна

конфігураційний файл хронічність/etc/chrony.conf. У ньому потрібно вказати список NTP серверів, які потрібно використовувати для синхронізації. Як і у ntp, у хронічність є інтерфейс командного рядка хронік. Щоб перевірити інформацію про поточні параметри синхронізації часу, використовуйте:

# chronyc tracking

відстеження chronyc

Щоб перевірити інформацію про серверах синхронізації, виконайте команду:

# chronyc sources

джерела chronyc

Якщо ви хочете встановити конкретний час і дату вручну, ви можете скористатися утилітою дата, Але перед цим потрібно відключити демон хронід.

Поширені помилки при налаштуванні часу в CentOS

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

При ручної синхронізації часу, у вас може виникнути подібна помилка:

ntpdate [26214]: the NTP socket is in use, exiting

ntpdate [26214]: сокет NTP використовується, виходить

Вона означає, що у вас запущений демон ntpd, Який блокує ручну синхронізація часу. Щоб виконати ручну синхронізацію, зупиніть демон ntpd:

# service ntpd stop

І почніть синхронізацію заново:

служба зупинки ntpd

Аналогічна помилка може виникати і при роботі з утилітою timedatectl:

Failed to set time: Automatic time synchronization is enabled.

timedatectl Не вдалося встановити час: увімкнено автоматичну синхронізацію часу

Тепер потрібно відключити автоматичну синхронізацію в самій утиліті timedatectl:

# timedatectl set-ntp 0

І виконати команду по установці конкретного часу:

timedatectl set-ntp

При роботі з часовими поясами, вони можуть бути не встановлені у вас на сервері і створити симлінк для місцевий час не вийде. Для того, щоб в системі були доступні часові пояси, встановіть утиліту тздата:

# yum install tzdata -y

Так при ручної синхронізації, часто бувають помилки виду:

28 Nov 10:12:39 ntpdate[897482]: sendto(185.217.191.98): Operation not permitted

В цьому випадку перевірте правила firewalld / iptables, і переконайтеся, що у вас на сервері відкритий UDP порт 123. Так само деякі хости синхронізації можуть бути недоступні в момент перевірки.

Leave a Reply

Your email address will not be published. Required fields are marked *