Справочная информация: Привет, В настоящее время я работаю со старой системой Linux SBC. Он использует BusyBox v1.00-rc2, который является старым и имеет ограниченную функциональность. (нет, обновление не вариант). Этот SBC был подключен к нескольким датчикам, записывая значение и время, отпечатав его.Как ускорить скачок во времени, чтобы избежать потери данных
Проблема: После нескольких лет, RTC отнесла от фактического времени, и некоторые из SBC задержать более 1hours (медленнее) от фактического времени.
Я не могу просто выполнить ntpdate с серверами ntp, потому что это вызовет скачок времени и вызовет огромный разрыв в журнале мониторинга данных. Это неприемлемо.
Решение: Я создал Баш скрипт, который будет:
- Проверьте нтп смещение с серверами СБК и НТП
- Затем, запишите смещение в переменной
- , если значение смещения больше 7, например (смещение 60 секунд), сценарий будет постепенно увеличивать системные часы, используя date -s.
- Это увеличит только на максимум 60 секунд каждый час
- Пример:
- СБК время 14:59:00 4 апреля 2016
- Фактическое время от NTP серверов 15:00:00 4 апреля 2016
- Если я использую Ntpdate -q -4 utcnist2.colorado.edu он вернется с 60 секунд смещение
- Итак, мой Сценарий будет только увеличиваться 7 секунд каждые 450 секунд
- С этой логикой, SBC время будет кетчуп с нтп времени вокруг апр четвёртый 16:04:17 2016
- проблема, этих скрипту удается медленно отрегулировать время, шаг за шагом, BUT иногда, это пойдет на haywire, и время SBC будет быстрее по сравнению с фактическим временем (время Ntp), и это приведет к потере данных (сервер не примет, если Время SBC быстрее, чем время сервера).
Вопросы:
- есть ли другой способ сделать добавочное время прыжка, похожее на это?
- Я заметил, что ntpdate имеет функцию -B, которая будет выполнять инкрементное обновление времени, но я не смог использовать это на SBC. Каков правильный метод использования этого переключателя? Или я неправильно понял его функциональность?
- Может ли adjtimex достичь этих целей?
- Вот мой полный Баш скрипт, если любой из вас нужно (слишком долго, чтобы вставить здесь),
http://pasted.co/65beb3db [пароль: 123456]
Как близко вы можете добраться до реального времени, используя свой скрипт? Вы также просмотрели эту страницу (http://support.ntp.org/bin/view/Dev/DeprecatingNtpdate) - в частности, «ntpd -x», которая может помочь. – user3788685
@ user3788685, привет и спасибо за предложение. (- Насколько близок мой сценарий в реальном времени?) Ans: Мой скрипт будет увеличиваться на 7 секунд каждые 7,5 минут (450 секунд), он будет делать это до тех пор, пока возврат NTP-серверов не будет равен 7 и будет синхронизировать с фактическим временем. Итак, чтобы ответить на этот вопрос, я думаю, что он довольно близок (~ 1сек.). (- Относительно ntpd -x) Ans: да, но похоже, что он не работает с версией busybox, которую я запускаю прямо сейчас. Или, может быть, мой синтаксис неверен? – Mie
У Busybox всегда было немного недостатка, когда я пробовал это год назад - у него не было все построено/работает. Я думал, что если ваш скрипт заставит вас достаточно близко, чтобы не прыгать, включите ntpd, чтобы держать вещи в проверке без необходимости запуска скрипта (или я здесь что-то не хватает) – user3788685