Подробная инструкция к clock(8)

Подробная инструкция к clock(8)

Эта глава сделана на основе предыдущей версии мини-HOWTO и предназначена для тех, кто использует clock(8). Все, что вам надо знать, находится в инструкции.

Проверка настроек

Проверьте ваши загрузочные файлы на наличие команд типа "clock -a" или "clock -ua". В зависимости от дистрибутива, они могут находиться в /etc/rc.local, или /etc/rc.d/rc.sysinit или где-нибудь рядом.

Если в строке написано "clock -s" или "clock -us", смените "s" на "a", и посмотрите, есть ли у вас файл /etc/adjtime, который содержит строку типа:

0.000000 842214901 0.000000

Эти числа являются величиной коррекции (в секундах за день), время, когда была произведена последняя коррекция (в секундах с 1 января, 1970), и часть секунды, которая была округлена последний раз. Если у вас нет этого файла, зайдите как пользователь root и создайте его. В нем должна быть лишь одна строка, содержащая нули:

0.0 0 0.0

Затем запустите "clock -a" или "clock -ua" вручную из командной строки для того, чтобы установить 2-ое число (используйте "u", если ваши часы показывают универсальное время, вместо местного).

Измерение величины коррекции

Для начала вам надо узнать, который час :-). Мой любимый способ - позвонить на WWV по телефону (303)499-7111 (это дорого). Если у вас есть доступ к серверу точного времени, вы можете воспользоваться программой ntpdate, входящей в приложение xntpd (поставьте флажок -b для того, чтобы ядро не сверяло системное время с ЧРВ). Иначе используйте "date -s hh:mm:ss" для установки времени вручную, а затем выполните "clock -w" для того, чтобы синхронизировать ЧРВ с системными часами. Вам потребуется знать, когда вы последний раз устанавливали время на часах, поэтому запишите эту информацию туда, где вы ее не потеряете. Если вы используете ntpdate, напишите "date +%s" и запишите число секунд, прошедших с 1 января 1970 года.

Затем зайдите в систему несколько дней спустя и посмотрите на сколько отклонились ваши часы. Если вы устанавливаете часы вручную, я бы посоветовал подождать две недели и высчитать отклонение в сек/день. После нескольких месяцев высчитайте отклонение в долях секунд за день. Если вы используете ntpdate, то вам придется долго ждать. Но позже можно их точно настроить.

Активируйте синхронизацию "clock -a" через некоторые промежутки времени для того, чтобы время на системных часах и ЧРВ не различалось. Эта команда также будет выполнятся каждый раз при запуске системы. Если вы делаете это часто, то этого будет достаточно для синхронности.

Помните, что в некоторых программах может произойти сбой, если коррекция часов произойдет более, чем на секунду, или, если время будет скорректировано назад. Если возникли подобные проблемы, то используйте xntpd или ntpdate для более плавной корректировки.

Пример

Как вычислить величину коррекции

Когда вы запускаете "date", определите, забежали ли ваши часы вперед, или они отстают? Если забежали, то придется вычесть несколько секунд, то есть написать их со знаком минус. Если они отставали, то вам придется добавить секунды, то есть записать их с положительным знаком.

Теперь вычтите одну дату из другой. Если использована команда "date +%j", то числа - это дни в году (1-365, или 1-366 в високосном). Если вы использовали команду "date +%s" , то это число в секундах, и вы должны разделить его на 86400, чтобы получить дни.

Если у вас уже есть величина коррекции в /etc/adjtime, то откорректируйте ее в зависимости от полученного результата. Умножьте старую величину на количество дней и прибавьте новую величину.

Затем разделите количество секунд на дни, и получите новую величину коррекции, которую надо записать вместо старой в /etc/adjtime. Запишите количество дней для следующего раза.

/etc/adjtime выглядит примерно так:

-9.600000 845082716 -0.250655
(заметьте, 9.6 секунд в день это почти 5 минут в месяц!)



Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости