Как проходит время на Raspberry Pi?


17

Как проходит время на Raspberry Pi с последним релизом Raspbian? Что устанавливает внутренние часы с NTP-сервера? Что происходит, когда NTP-сервер недоступен?

Из моей программы я пытаюсь определить, было ли установлено время с NTP, и попросить пользователя установить его, если это не так.



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

4
если time.now <2010 не будет работать, поскольку RPi устанавливает текущее время с момента последнего выключения. Вот почему я хочу знать, как установлено время, чтобы я мог отключить это поведение при необходимости.
Парень

pumkin - как этот вопрос связан с дрейфом внутренних часов?
Парень

1
Возможно, заголовок этого вопроса должен быть более конкретным, чтобы избежать совпадения между этими вопросами.
XTL

Ответы:


22

У Raspbian есть два программных решения для хронометража. Поскольку NTP требует подключения к сети, и это совершенно бесполезно, если ваш Raspberry Pi не подключен к сети, он также использует fake-hwclock . Он периодически сохраняет текущие часы и загружает их при запуске.

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

Это не слишком точно, но устранит проблему путешествия во времени после 1970 года после каждой перезагрузки.


Угадай, Дживингс! :-)
Петр Кула

@ asalamon74: можете ли вы добавить, как отключить fake-hwclock, или его нужно будет удалить?
Парень

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

Или это - вы можете получить grep 'stratum' <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
Это, конечно, не правда на моем Пи. Если я загружаю его без подключения к сети, то время эпохи. Я вижу это прямо сейчас.
Jivings

2
Это, вероятно, зависит от распределения.
Алекс Чемберлен

1
@AlexChamberlain Кажется странным расхождением.
Jivings

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