Как установить время, часовой пояс и синхронизировать часы в Linux
В этой статье вы узнаете, как установить время, часовой пояс и синхронизировать системные часы Linux с NTP с помощью timedatectl, systemd-timesyncd и chrony. :
Команда «timedatectl» является утилитой для дистрибутивов на базе RHEL и Debian и является частью системы управления и менеджера служб «systemd», служа заменой старой традиционной команды date, используемой в дистрибутивах Linux на основе демона «sysvinit».
Команда timedatectl позволяет просматривать и изменять настройки системных часов и их конфигурацию. С помощью этой команды вы можете установить или изменить текущие дату, время и часовую зону, а также включить автоматическую синхронизацию системных часов с удалённым сервером NTP.
В этом руководстве я покажу вам, как управлять временем на вашей системе Linux, устанавливая дату, время, часовой пояс и синхронизируя время с NTP через терминал с помощью timedatectl, systemd-timesyncd и chrony.
Всегда полезно поддерживать правильное время на вашем сервере или системе Linux, и это может иметь следующие преимущества:
- Обеспечьте своевременное выполнение системных задач, так как большинство задач в Linux управляются с помощью времени.
- Точное время для регистрации событий и другой информации в системе.
- Правильная синхронизация для распределённых систем и приложений.
- Необходимо для протоколов безопасности, таких как Kerberos и проверка сертификатов SSL/TLS.
Как найти и установить местный часовой пояс в Linux
1. Чтобы отобразить текущее время и дату на вашей системе, используйте команду timedatectl в командной строке следующим образом:
timedatectl status
В приведённом выше выводе RTC время — это время аппаратных часов.
2. Время на вашей системе Linux всегда управляется через установленный на системе часовой пояс. Чтобы узнать текущий часовой пояс, выполните следующие действия:
timedatectl
OR
timedatectl | grep Time
3. Чтобы просмотреть все доступные часовые пояса, выполните следующую команду:
timedatectl list-timezones
4. Чтобы узнать местный часовой пояс в зависимости от вашего местоположения, выполните следующую команду.
timedatectl list-timezones | egrep -o "Asia/B.*"
timedatectl list-timezones | egrep -o "Europe/L.*"
timedatectl list-timezones | egrep -o "America/N.*"
5. Чтобы установить локальный часовой пояс в Linux, мы будем использовать переключатель set-timezone, как показано ниже.
sudo timedatectl set-timezone "Asia/Kolkata"
timedatectl status
Всегда рекомендуется использовать и устанавливать координированное всемирное время, UTC.
sudo timedatectl set-timezone UTC
timedatectl status
Вам нужно ввести правильное название часового пояса, иначе при его изменении могут возникнуть ошибки. В следующем примере часовой пояс «Asia/Kolkata» указан неправильно, что и вызывает ошибку.
failed to set time zone: invalid timezone
Как установить дату и время в Linux
Вы можете установить дату и время на вашей системе с помощью команды timedatectl следующим образом:
Установить время в Linux
6. Чтобы установить только время, мы можем использовать переключатель set-time вместе с форматом времени HH:MM:SS (Часы, Минуты и Секунды).
sudo timedatectl set-time 12:25:30
timedatectl status
Вы можете получить следующую ошибку при установке даты, как показано выше:
Failed to set time: Automatic time synchronization is enabled
Ошибка возникает из-за того, что включена автоматическая синхронизация времени (NTP), которая не позволяет вручную изменять время.
Чтобы исправить это, сначала отключите NTP, затем установите время.
sudo timedatectl set-ntp false
sudo timedatectl set-time 12:25:30
timedatectl status
7. Чтобы установить и дату, и время, используйте параметр set-time вместе с форматом даты YYYY-MM-DD (Год, Месяц, День) и временем в формате HH:MM:SS (Часы, Минуты и Секунды):
sudo timedatectl set-time '2026-01-23 12:25:30'
Как найти и настроить аппаратные часы в Linux
8. Чтобы установить аппаратные часы в координированное универсальное время, UTC, используйте опцию set-local-rtc boolean-value следующим образом:
Сначала узнайте, установлен ли ваш аппаратный часы на местный часовой пояс:
timedatectl | grep local
Установите аппаратные часы в соответствии с местным часовым поясом:
sudo timedatectl set-local-rtc 1
Установите аппаратные часы на всемирное координированное время (UTC):
sudo timedatectl set-local-rtc 0
Примечание: Установка RTC на местное время не рекомендуется и может вызвать проблемы с переходом на летнее время, поэтому лучше оставлять RTC в UTC.
Синхронизация системных часов Linux с удалённым NTP-сервером
NTP означает Протокол сетевого времени и является интернет-протоколом, который используется для синхронизации системных часов между компьютерами.
Утилита timedatectl позволяет автоматически синхронизировать системные часы Linux с удалённой группой серверов с помощью NTP.
Большинство современных дистрибутивов Linux используют различные реализации синхронизации NTP:
- systemd-timesyncd: Лёгкий клиент SNTP (Simple NTP), встроенный в systemd, который подходит для большинства настольных и односерверных конфигураций.
- chrony: Полнофункциональная реализация NTP, которая может работать как клиент и сервер. Она лучше справляется с прерывистыми сетевыми соединениями и более точна.
Использование systemd-timesyncd
Чтобы начать автоматическую синхронизацию времени с удалённым NTP сервером, введите следующую команду в терминале, которая включит и запустит службу systemd-timesyncd.
sudo timedatectl set-ntp true
Чтобы отключить синхронизацию времени NTP, введите следующую команду на терминале.
sudo timedatectl set-ntp false
Чтобы проверить статус синхронизации:
timedatectl status
Вы должны увидеть «Системные часы синхронизированы: да» и «Служба NTP: активна».
Использование chrony (Рекомендуется для серверов)
Если вы управляете сервером или вам нужна более надежная синхронизация времени, chrony — лучший выбор, особенно он хорош для:
- Системы, которые не работают непрерывно (ноутбуки, настольные компьютеры).
- Серверам нужна высокая точность.
- Системы с прерывистой сетевой связью.
- Кластерные среды, где критически важна согласованность по времени.
Сначала установите chrony (если он еще не установлен):
sudo apt install chrony [On Debian-based systems]
sudo dnf install chrony [On RHEL-based systems]
Примечание: Установка chrony автоматически отключит systemd-timesyncd, чтобы избежать конфликтов.
После установки включите, запустите и проверьте состояние синхронизации:
sudo systemctl enable --now chronyd
timedatectl status
Чтобы использовать собственные NTP-серверы вместо стандартных, необходимо отредактировать конфигурационный файл Chrony.
sudo nano /etc/chrony/chrony.conf
OR
sudo nano /etc/chrony/sources.d/custom.sources
Добавьте предпочитаемые вами NTP-серверы (вы можете получить список NTP-серверов на проекте NTP Pool).
pool 0.pool.ntp.org iburst
pool 1.pool.ntp.org iburst
pool 2.pool.ntp.org iburst
Перезапустите chrony после внесения изменений:
sudo systemctl restart chronyd
Важные сведения о синхронизации NTP
- Вы не можете запускать несколько реализаций NTP одновременно, поэтому выберите либо systemd-timesyncd, либо chrony.
- systemd-timesyncd является только клиентской реализацией и не может предоставлять время другим системам.
- chrony может выступать как клиентом времени, так и сервером времени для вашей локальной сети.
- Для производственных серверов и критической инфраструктуры обычно рекомендуется использовать chrony вместо systemd-timesyncd.
- Для работы NTP требуется, чтобы порт UDP 123 был открыт для исходящих соединений.
Резюме
Это очень простые примеры, приведённые в этом руководстве, и я надеюсь, что они будут полезны для настройки различных системных часов и часовых поясов в Linux.
Чтобы узнать больше об этом инструменте, перейдите на страницу руководства timedatectl.
man timedatectl
Если у вас есть что сказать об этой статье, не стесняйтесь оставить комментарий, чтобы добавить любую дополнительную информацию.










