Як тримається час на Raspberry Pi?


17

Як проводиться час на Raspberry Pi з останньою версією Raspbian? Що встановлює внутрішній годинник від сервера NTP? Що відбувається, коли сервер NTP недоступний?

У своїй програмі я намагаюся визначити, чи встановлено час від NTP, і попросити користувача встановити його, якщо його немає.



4
Якщо time.now <2010 рік - час не встановлено. Вам не потрібно знати нічого іншого. Час не економиться на падіннях електроенергії і буде 1970 відповідно до специфікації UNIX / POSIX. Щоб дізнатися, чи неточний час, потрібно запитати NTP та порівняти місцевий час. Ви не можете визначити, чи закінчився час синхронізації, не запитуючи сервер часу.
Пьотр Кула

4
якщо time.now <2010 не працюватиме, оскільки RPi встановлює поточний час від останнього часу відключення. Ось чому я хочу знати, як встановлюється час, щоб я міг відключити цю поведінку при необхідності.
Хлопець

гарбуз - як це питання пов'язане з дрейфом внутрішнього годинника?
Хлопець

1
Можливо, заголовок цього питання повинен бути більш конкретним, щоб уникнути перекриття між цими питаннями.
XTL

Відповіді:


22

Raspbian має два програмних рішення для хронометражу. Оскільки NTP вимагає підключення до мережі, і це зовсім марно, якщо ваш Raspberry Pi не підключений до мережі, він також використовує фальшивий годинник . Він періодично зберігає поточний годинник і завантажує його при запуску.

pi@raspberrypi ~ $ cat /etc/fake-hwclock.data 
2012-08-15 03:17:01

Це не надто точно, але усуне проблему подорожі часом до 1970 року після кожного перезавантаження.


Гарна здогадка Jivings! :-)
Пьотр Кула

@ asalamon74: чи можете ви додати як відключити підроблений годинник або його потрібно буде видалити?
Хлопець

2

Ви можете вести статистику NTP, а потім розбирати журнали зі своєї програми.

Налаштування демонів NTP зберігаються у файлі /etc/ntp.conf. Рядок без коментарів із директивою statsdirдля включення реєстрації статистики NTP. Переконайтесь, що вказаний каталог існує та є доступним для запису для користувача ntpd.


1

Щоб перевірити, чи встановлено час сервером NTP, ви можете спробувати використовувати ntpq -p, ви отримаєте щось подібне *:

$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*223.212.138.2    .MRS.           1 u  424  512  377    4.080   -4.551  21.857
+ts0.tttsc.nvm.e  .GPS.           1 u  387  512  363    1.304   -7.563  28.405
+218.89.10.3      217.13.17.82    2 u  334  512  377    1.853   -4.562  19.474

'Досягнення' буде> 0 в якомусь рядку, якщо NTP-сервер досягнуто і таким чином встановлено час. Це 8-бітне ковзання восьми восьми, тобто 0,1,3,7,17,37,77,177,377

Або це - ви можете зірвати "прошарок" <16 або sync_ntp (очевидно, це не в RPi)

$ ntpq -c rl
associd=0 status=0615 leap_none, sync_ntp, 1 event, clock_sync,
version="ntpd 4.2.6p5@1.2349-o Mon Jul 18 09:22:49 UTC 2013 (1)",
processor="x86_64", system="Linux/2.6.32-431.29.2.el6.x86_64", leap=00,
stratum=4, precision=-21, rootdelay=40.242, rootdisp=315.102,
refid=192.168.1.123,
reftime=d82131cd.fbb96c5e  Thu, Nov 27 2014 13:14:53.983,
clock=d82138e6.fd03bdd1  Thu, Nov 27 2014 13:45:10.988, peer=61770, tc=9,
mintc=3, offset=5.214, frequency=52.475, sys_jitter=12.217,
clk_jitter=23.319, clk_wander=1.373
$

Як варіант (я думаю, що ntpstat не доступний відразу на RPi)

$ ntpstat
synchronised to NTP server (192.168.1.123) at stratum 4
   time correct to within 310 ms
   polling server every 512 s

і використовувати вихідні коди, також пояснені тут http://www.cyberciti.biz/faq/linux-unix-bsd-is-ntp-client-working/, правда, не специфічні для RPI ...

* Адреси часу сервера не реальні


-1

Хронометраж весь у програмному забезпеченні. Без використання NTP немає часу.

Якщо ви хочете перевірити, чи встановлено годинник, тоді просто скористайтеся, dateщоб побачити, чи відображається ця епоха Unix, для чого Pi за замовчуванням.


2
Неправильно. RPi встановлює поточний час від останнього часу відключення, коли немає мережевого з'єднання. Отже, годинник завжди є деяким випадковим часом раніше, ніж правильний час, а не обов'язково Unix епоха.
Хлопець

2
Це, звичайно, не так на моєму Пі. Якщо я завантажую його без підключення до мережі, то час - це епоха. Я зараз це бачу.
Відхилення

2
Мабуть, це залежить від розподілу.
Алекс Чемберлен

1
@AlexChamberlain Здається дивна розбіжність.
Відхилення

1
@Jivings Якщо на Raspbian є частина програмного забезпечення, яке fake-hwclock, можливо, не буде на Arch. Здається, що тип пуху Arch ігнорує.
Алекс Чемберлен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.