Назад | Перейти на главную страницу

Как время зависит от ntpd и / etc / localtime

Кто-нибудь может объяснить, как ntpd и /etc/localtime и system clock взаимодействуют друг с другом в UNIX или, точнее, во FreeBSD?

Я даю следующее подробное описание концепций на тот случай, если я неправильно понимаю некоторые из них, чтобы вы могли указать на это. Мой настоящий вопрос ниже.

ДАТА Когда мы делаем "date modify"в оболочке, я думаю, это изменит /etc/localtime. /etc/localtime содержит дату и время, а также информацию о часовом поясе, которую запрашивает glibc функции как localtime() и часовой пояс также можно установить вручную с помощью tzset().

часы Судя по другим материалам в Интернете, в компьютере есть два часа: hardware clock и system clock. Аппаратные часы поддерживаются батареей на материнской плате, а системные часы - это программная концепция. Системные часы будут установлены аппаратными часами при загрузке системы. Но позже это может быть изменено ntpd (поправьте меня если я ошибаюсь).

ntpd nptd это процесс пользовательского пространства, который запускается через несколько секунд после запуска системы. Он будет запрашивать некоторые определенные серверы ntp, настроенные ntp.conf . Он имеет функцию медленной регулировки дрейфа времени, так как он не вносит резких изменений во время. (но как насчет часового пояса, будет ли ntpd запрашивать часовой пояс и постепенно его менять? это может занять слишком много времени ..) Для резкого обновления времени есть ntpupdate() api.

Вопрос

Я не нашел ресурса, объясняющего взаимодействие между ними. Кажется, что у каждой из этих концепций есть несколько независимых локальных файлов, которые нужно трогать и хранить. Причина, по которой я спрашиваю, заключается в том, что я наблюдаю, что для написанного мной процесса, который вызывает localtime динамически каждый раз, когда пользователь запрашивает отображение некоторых данных, это не отражает изменение часового пояса, обновленное date modify(Ни время, ни часовой пояс не изменились в процессе).

Если я правильно вас понял, я думаю, что следующие ответы на основной вопрос вашего вопроса:

Чтобы изменить часовой пояс, замените свой /etc/localtime с одним из файлов в /usr/share/zoneinfo дерево каталогов. Установка времени с помощью date не изменяет часовой пояс и, следовательно, ничего не делает с /etc/localtime файл.

Обратите внимание, что изменение /etc/localtime не обязательно влияет на запущенные процессы. Перезагрузитесь, если хотите, чтобы все демоны видели новый часовой пояс.