Поиск по этому блогу

Синхронизация времени в ОС Linux

Синхронизация времени в ОС Linux | Барнаульский Кабан
Linux + NTP = с точностью до мс«Который час?» — это вопрос, который звучит очень часто в современном обществе. В наш век пара, электричества, и высоких компьютерных технологий, время надо знать особенно точно. Не удивительно, что одним из первых компьютерных сетевых протоколов был протокол для синхронизации внутренних часов компьютеров.

Материал из Википедии – свободной энциклопедии

Network Time Protocol (NTP) — сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью.

NTP использует алгоритм Марзулло (предложен Кейтом Марзулло (Keith Marzullo) из Университета Калифорнии, Сан-Диего), включая такую особенность, как учёт времени передачи. В версии 4 способен достигать точности 10 мс (1/100 с) при работе через Интернет, и до 0.2 мс (1/5000 с) и лучше внутри локальных сетей.

NTP использует иерархическую систему «часовых уровней». Уровень 1 синхронизован с высокоточными часами, например, с системой GPS или атомным эталоном времени. Уровень 2 синхронизируется с одной из машин уровня 1, и так далее.



Для настройки точного времени на компьютере под управлением ОС Linux, предлагаю использовать несложный алгоритм. Первым делом нужно определить нужную нам временную зону. К примеру, город в котором я живу, относится к временной зоне Новосибирска, Находка относится к временной зоне Владивостока и т.д. Текущее смещение времени хранится в файле /etc/localtime а готовые настройки временных зон хранятся в директории /usr/share/zoneinfo. Настройка осуществляется копированием файла с подходящей временной зоной в файл /etc/localtime.

# rm -rf /etc/localtime

# cp /share/zoneinfo/Asia/Novosibirsk /etc/localtime

Как вариант, можно использовать ссылку:

# ln -s /share/zoneinfo/Asia/Novosibirsk /etc/localtime

Готово, временную зону настроили. Осталось синхронизировать время с одним из серверов времени. Для автоматизации процедуры напишем простой скрипт:

#!/bin/bash

/usr/sbin/ntpdate -t 60 0.ru.pool.ntp.org
if [ $? -eq 0 ] ; then
/sbin/hwclock –systohc
logger -t «time-sync» «Success»
else
logger -t «time-sync» «Failed»
fi

Скрипт сохраним в /usr/local/bin/time-sync.sh (не забудьте дать права на выполнение chmod 700 /usr/local/bin/time-sync.sh).

Теперь, по команде time-sync.sh с привилегиями суперпользователя компьютер будет синхронизировать время с сервером времени. Исходя из логики работы компьютера и личного опыта, вполне достаточной будет синхронизация времери раз в сутки и при каждом старте компьютера. Чтобы запланировать эти задания, нужно добавить команду /usr/local/bin/time-sync.sh в скрипт автозапуска /etc/rc.local и создать правило для периодически выполняющихся задач (команда crontab -e запустит редактор настроек, в котором нужно вписать строчку 0 12 * * 2 /usr/local/bin/time-sync.sh).

Комментариев нет:

Отправить комментарий