Синхронизация времени в ОС 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).
___________
Буду благодарен за комментарии.
Если понравился блог - разместите у себя на сайте ссылку на мой блог . Спасибо
Advego — уникальный контент для вебмастера!
Advego — общайся и зарабатывай деньги!
Буду благодарен за комментарии.
Если понравился блог - разместите у себя на сайте ссылку на мой блог . Спасибо
Advego — уникальный контент для вебмастера!
Advego — общайся и зарабатывай деньги!
Комментариев нет:
Отправить комментарий