timedatactl
timedatectl set timezone — опция, которой задается часовой пояс определяющий системное время на серверах для которых инициализация выполняется при помощи systemd.
timedatectl set timezone
Для дистрибутивов Debian до 9 версии и Ubuntu до 16 инициализация производится за счет SysV и upstart скриптов. Системное время задается через dpkg-reconfigure timezone.
В свежих версиях операционных систем применяется systemd, его элементом является инструмент по управлению временем timedatectl.
Текущий часовой пояс можно посмотреть так:
Local time: Mon 2018-08-27 06:01:50 UTC
Universal time: Mon 2018-08-27 06:01:50 UTC
RTC time: n/a
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
Основное преимущество timedatectl — корректное отображение записей в syslog, ранее они продолжались вестись по UTC даже после переопределения часового пояса.
Все часовые пояса выводятся с ключом list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
Africa/Blantyre
Africa/Brazzaville
Africa/Bujumbura
Можно отредактировать вывод чтобы найти нужное значение
timedatectl list-timezones | grep Asia | tail -n 6
Asia/Vientiane
Asia/Vladivostok
Asia/Yakutsk
Asia/Yangon
Asia/Yekaterinburg
Asia/Yerevan
Установим временную зону через timedatectl
timedatectl set-timezone Asia/Yekaterinburg
Проверяем с ключом status
Local time: Mon 2018-08-27 11:03:12 +05
Universal time: Mon 2018-08-27 06:03:12 UTC
RTC time: n/a
Time zone: Asia/Yekaterinburg (+05, +0500)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
Сейчас системе известно как Universal time, так и Local time. Разница между ними в 5 часов, что и указано в Time zone
Читайте также про другой компонент systemd — journald
4 Фев 2020 18:02:19 | 5 комментариев
Использование systemd-timesyncd для синхронизации времени в Debian/Ubuntu
В Linux для синхронизации времени традиционно используется ntpd как стандарт де-факто, но есть другая и более простая альтернатива — это systemd-timesyncd.
Давайте настроим его для синхронизации времени, а про ntpd забудем и удалим его.
С ntpd все просто, ставится пакет ntp, настраивается файл конфигурации /etc/ntp.conf и включается служба ntp (systemctl start ntp), далее проверяем с помощью утилиты ntpstat факт синхронизации локальных часов с удаленным сервером и радуемся.
Все бы хорошо, но с помощью ntpd можно не только забирать время с удаленных сервером, но и выступать в качестве сервера времени для других, то есть ntpd принимает входящие соединения и его некорректная настройка может послужить причиной участия вашего сервера в DDoS-атаки (см. apt-get remove ntp ntpstat —purge apt autoremove
Удалить ntpd или например chronyd нужно потом, что иначе systemd-timesyncd не будет синхронизировать время. За такую проверку отвечает файл /lib/systemd/system/systemd-timesyncd.service.d/disable-with-time-daemon.conf в котором прописан список бинарников, при наличии которых в системе демон systemd-timesyncd не будет работать.
Теперь настроим systemd-timesyncd, для этого в файл конфигурации /etc/systemd/timesyncd.conf пропишем список серверов времени:
echo 'NTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org' >> /etc/systemd/timesyncd.conf
Таким образом мы добавили в файл настройку NTP= определяющую список основных серверов времени, можно добавить настройку FallbackNTP= которая определит список резервных серверов времени:
echo 'FallbackNTP=ntp.ubuntu.com' >> /etc/systemd/timesyncd.conf
Смотрим текущий статус синхронизации часов:
Local time: Вт 2020-02-04 13:13:04 +05 Universal time: Вт 2020-02-04 08:13:04 UTC RTC time: Вт 2020-02-04 08:14:11 Time zone: Asia/Yekaterinburg (+05, +0500) Network time on: yes NTP synchronized: no RTC in local TZ: no
В строке «NTP synchronized» может стоять no если синхронизация часов по ntp до этого не была настроена вообще или yes, если до этого часы синхронизировались с помощью ntpd
Включаем использование systemd-timesyncd для синхронизации времени:
Включаем и перезапускаем службу systemd-timesyncd:
systemctl enable --now systemd-timesyncd.service systemctl restart systemd-timesyncd.service
systemctl status systemd-timesyncd.service
● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/systemd-timesyncd.service.d └─disable-with-time-daemon.conf Active: active (running) since Вт 2020-02-04 13:14:22 +05; 16min ago Docs: man:systemd-timesyncd.service(8) Main PID: 11666 (systemd-timesyn) Status: "Synchronized to time server 91.206.16.3:123 (0.debian.pool.ntp.org)." Tasks: 2 Memory: 388.0K CPU: 10ms CGroup: /system.slice/systemd-timesyncd.service └─11666 /lib/systemd/systemd-timesyncd фев 04 13:14:22 myserver systemd[1]: Starting Network Time Synchronization. фев 04 13:14:22 myserver systemd[1]: Started Network Time Synchronization. фев 04 13:12:34 myserver systemd-timesyncd[11666]: Synchronized to time server 91.206.16.3:123 (0.debian.pool.n
Через несколько минут можно проверить с помощью timedatectl состояние синхронизации:
Local time: Вт 2020-02-04 13:32:03 +05 Universal time: Вт 2020-02-04 08:32:03 UTC RTC time: Вт 2020-02-04 08:32:03 Time zone: Asia/Yekaterinburg (+05, +0500) Network time on: yes NTP synchronized: yes RTC in local TZ: no
Значение в строке «NTP synchronized» должно измениться на yes
Если systemd-timesyncd не синхронизирует часы, то прежде всего проверьте настройки межсетевого экрана (iptables) на предмет разрешения исходящих подключений на 123 порт по протоколу UDP.
Детальную информацию о состоянии синхронизации времени можно посмотреть командой:
timedatectl timesync-status
Server: 103.134.252.11 (0.debian.pool.ntp.org) Poll interval: 34min 8s (min: 32s; max 34min 8s) Leap: normal Version: 4 Stratum: 2 Reference: 68D34CE2 Precision: 1us (-24) Root distance: 65.284ms (max: 5s) Offset: +10.793ms Delay: 149.152ms Jitter: 6.030ms Packet count: 8 Frequency: +47.109ppm
P.S. Утилиту timedatectl так же можно использовать для смены часового пояса, пример:
Выведем список временных зон:
timedatectl list-timezones
Установим временную зону Asia/Yekaterinburg:
timedatectl set-timezone Asia/Yekaterinburg
+5 свидетельствует об установке нашей зоны (Asia/Yekaterinburg это UTC+5)
На этом все, до скорых встреч. Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.