Точный учет времени стал критически важным компонентом развертывания современного программного обеспечения. Будь то запись журналов в правильном порядке или корректное применение обновлений базы данных, несовпадение времени может привести к ошибкам, повреждению данных и другим сложным для отладки проблемам.
В Debian 10 синхронизация времени встроена и активирована по умолчанию с помощью стандартного сервера времени ntpd, предоставляемого пакетом ntp. В этой статье мы рассмотрим некоторые основные команды, связанные с временем, проверим, что ntpd активен и подключён к пирам, а также узнаем, как активировать альтернативную службу сетевого времени systemd-timesyncd.
Шаг 1 - Навигация по основным командам времени
Самая основная команда для определения времени на вашем сервере - это date. Любой пользователь может ввести эту команду, чтобы распечатать дату и время:
1 | date |
Чаще всего на вашем сервере по умолчанию установлен часовой пояс UTC, как показано на рисунке выше. UTC - это всемирное координированное время, время на нулевом градусе долготы. Последовательное использование универсального времени уменьшает путаницу, когда ваша инфраструктура охватывает несколько часовых поясов.
Если у вас другие требования и вам нужно изменить часовой пояс, вы можете воспользоваться командой timedatectl.
Сначала перечислите доступные часовые пояса:
1 | timedatectl list-timezones |
На экране появится список часовых поясов. Вы можете нажать ПРОБЕЛ, чтобы перейти вниз, и b, чтобы перейти вверх. Когда вы найдете нужный часовой пояс, запишите его, а затем наберите q, чтобы выйти из списка.
Теперь установите часовой пояс с помощью команды timedatectl set-timezone, обязательно заменив выделенную часть ниже на часовой пояс, который вы нашли в списке. Для внесения этих изменений вам потребуется использовать sudo с timedatectl:
1 | sudo timedatectl set-timezone Europe/Moscow |
Вы можете проверить изменения, запустив дату еще раз:
1 | date |
Теперь, когда мы знаем, как проверить часы и установить часовые пояса, давайте убедимся, что наше время синхронизируется правильно.
Шаг 2 - Проверка состояния ntpd
По умолчанию в Debian 10 запущен стандартный сервер ntpd, который синхронизирует ваше системное время с пулом внешних серверов времени. Мы можем проверить, что он запущен, с помощью команды systemctl:
1 | sudo systemctl status ntp |
Статус active (running) означает, что ntpd запустился правильно. Для получения дополнительной информации о состоянии ntpd можно использовать команду ntpq:
1 | ntpq -p |
1 2 3 4 5 6 7 8 9 10 | remote refid st t when poll reach delay offset jitter ============================================================================== 0.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 1.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 2.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 3.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 +208.67.72.50 152.2.133.55 2 u 12 64 377 39.381 1.696 0.674 +198.46.223.227 204.9.54.119 2 u 6 64 377 22.671 3.536 1.818 -zinc.frizzen.ne 108.61.56.35 3 u 43 64 377 12.012 1.268 2.553 ... |
ntpq - это инструмент запросов для ntpd. Флаг -p запрашивает информацию о NTP-серверах (или пирах), к которым подключён ntpd. Ваш результат будет немного отличаться, но в нём должен быть список серверов пула Debian по умолчанию, а также несколько других. Имейте в виду, что ntpd может потребоваться несколько минут для установления соединения.
Шаг 3 - Переход на systemd-timesyncd
Можно использовать встроенный в systemd компонент timesyncd для замены ntpd. timesyncd - это более легкая альтернатива ntpd, которая лучше интегрирована с systemd. Однако обратите внимание, что он не поддерживает работу в качестве сервера времени, и его методы, используемые для синхронизации системного времени, несколько менее сложны. Если вы работаете со сложными распределенными системами реального времени, возможно, вам лучше остановиться на ntpd.
Чтобы использовать timesyncd, мы должны сначала удалить ntpd:
1 | sudo apt purge ntp |
Затем запустите службу timesyncd:
1 | sudo systemctl start systemd-timesyncd |
Наконец, проверьте статус службы, чтобы убедиться, что она запущена:
1 | sudo systemctl status systemd-timesyncd |
Мы можем использовать timedatectl, чтобы вывести текущее представление systemd о времени:
1 | timedatectl |
Системные часы синхронизированы: да означает, что время было успешно синхронизировано, а служба NTP: активна означает, что timesyncd включен и работает.
При необходимости, вы можете добавить свой ntp сервер, с помощью следующих команд:
1 2 | echo 'Servers=ru.pool.ntp.org' | sudo tee -a /etc/systemd/timesyncd.conf > /dev/null sudo systemctl start systemd-timesync |
Заключение
В этой статье мы показали, как просматривать системное время, менять часовые пояса, работать с ntpd и переключаться на службу timesyncd в systemd.