Использование функции времени C (количество секунд с начала эпохи) показывает, что время на моем текущем сервере CentOS 6 отстает примерно на 7 часов по сравнению с другим сервером с правильным временем. Как исправить системные часы? Я не думаю, что это дрейф, потому что я установил этот сервер всего несколько недель назад, но это может быть. Я настраиваю ntpd, но это не помогает, возможно, потому, что разница во времени слишком велика.
Простой ответ - «установить дату вручную», что вам нужно сделать, но чтобы это не повторилось, вы должны сделать еще кое-что.
Убедитесь, что системная конфигурация часового пояса находится в нормальном состоянии.
Если нет очень веской причины не делать этого (например, проблемы совместимости программного обеспечения), серверные часы всегда должны работать по времени UTC.
Если вы решите не использовать UTC, выберите часовой пояс, запустив tzselect
. На экране будет напечатан часовой пояс, который вы будете использовать ниже. Примером может быть Europe/Moscow
. В противном случае используйте UTC
как часовой пояс ниже.
Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Europe/Moscow
Установите системные часы на нужный часовой пояс, выполнив следующие действия:
Заменить содержимое /etc/sysconfig/clock
со следующим:
ZONE="<timezone>"
UTC=true
Например:
ZONE="Europe/Moscow"
UTC=true
Обратите внимание, что UTC=true
здесь следует установить, даже если вы не используете UTC в качестве часового пояса. Это относится к аппаратным часам сервера, которые всегда должны быть в формате UTC независимо от выбранного вами системного часового пояса.
Заменить /etc/localtime
файл со ссылкой на выбранный часовой пояс:
# ln -snf /usr/share/zoneinfo/<timezone> /etc/localtime
Например:
# ln -snf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
# ln -snf /usr/share/zoneinfo/UTC /etc/localtime
Установить часы вручную к текущему времени.
Синхронизируйте системные часы с текущим временем:
# ntpd -g -q
Убедитесь, что время отображается правильно:
# date
Синхронизируйте аппаратные часы сервера с системными часами:
# hwclock -wu
Перезагрузите компьютер. Перезапуск необходим, потому что все системные службы должны быть перезапущены, чтобы получить исправленное время и часовой пояс, а также необходимо проверить аппаратные часы сервера (например, на предмет неисправной батареи).
После перезапуска убедитесь, что система показывает правильное время и ntpd работает правильно.
Дело в том, что часовой пояс совпадает с часами, которые вы сравниваете.
РЕДАКТИРОВАТЬ
если ТЗ другое
/ etc / localtime
тогда не забудьте принять во внимание смещение UTC при сравнении системного времени