Làm thế nào là thời gian lưu trên Raspberry Pi?


17

Làm thế nào thời gian được giữ trên một Raspberry Pi với bản phát hành Raspbian mới nhất? Điều gì đặt đồng hồ nội bộ từ máy chủ NTP? Điều gì xảy ra khi không có máy chủ NTP?

Từ chương trình của tôi, tôi đang cố gắng xác định xem thời gian đã được đặt từ NTP hay chưa và yêu cầu người dùng đặt nó nếu không.



4
Nếu time.now <than năm 2010 - thì thời gian không được đặt. Bạn không cần phải biết bất cứ điều gì khác. Thời gian không được lưu khi mất điện và sẽ là 1970 theo thông số kỹ thuật UNIX / POSIX. Để tìm hiểu xem thời gian có chính xác không, bạn cần truy vấn NTP và so sánh thời gian địa phương. Bạn không thể xác định nếu thời gian không đồng bộ mà không yêu cầu máy chủ thời gian.
Piotr Kula

4
if time.now <2010 sẽ không hoạt động vì RPi đặt thời gian hiện tại từ thời gian tắt máy cuối cùng của nó. Đây là lý do tại sao tôi muốn biết thời gian được đặt như thế nào để tôi có thể vô hiệu hóa hành vi này nếu cần thiết.
Guy

pumkin - câu hỏi này liên quan đến sự trôi dạt của đồng hồ bên trong như thế nào?
Guy

1
Có lẽ tiêu đề của câu hỏi này nên cụ thể hơn để tránh chồng chéo giữa những câu hỏi này.
XtL

Câu trả lời:


21

Raspbian có hai giải pháp phần mềm để chấm công. Vì NTP yêu cầu kết nối mạng và nó khá vô dụng nếu Raspberry Pi của bạn không được kết nối với mạng, nó cũng sử dụng hàng giờ giả . Nó lưu đồng hồ hiện tại theo định kỳ và tải nó khi khởi động.

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

Điều này không quá chính xác, nhưng sẽ loại bỏ vấn đề thời gian quay trở lại năm 1970 sau mỗi lần khởi động lại.


Jivings đoán tốt! :-)
Piotr Kula

@ asalamon74: bạn có thể thêm cách vô hiệu hóa fake-hwclock không hoặc có cần gỡ cài đặt không?
Guy

2

Bạn có thể đăng nhập thống kê NTP và sau đó phân tích nhật ký từ chương trình của bạn.

Cài đặt daemon NTP được lưu trữ trong tập tin /etc/ntp.conf. Dòng không ghi chú với chỉ thị statsdirđể cho phép ghi nhật ký thống kê NTP. Đảm bảo rằng thư mục được tham chiếu tồn tại và có thể ghi cho người dùng ntpd.


1

Để kiểm tra xem thời gian đã được đặt bởi máy chủ NTP hay chưa, bạn có thể thử sử dụng ntpq -p, bạn sẽ nhận được một cái gì đó như thế này *:

$ 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

'Đạt' sẽ> 0 trong một số hàng nếu máy chủ NTP đã đạt được và do đó đặt thời gian. Đó là 8 bit bát phân trượt dọc theo tức là 0,1,3,7,17,37,77,177,377

Hoặc cái này - bạn có thể grep 'stratum' <16 hoặc sync_ntp (điều này rõ ràng không có trên 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
$

Ngoài ra (tôi nghĩ rằng ntpstat không có sẵn ngay lập tức trên RPi)

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

và sử dụng mã thoát quá được giải thích ở đây http://www.cyberciti.biz/faq/linux-unix-bsd-is-ntp-client-usiness/ thừa nhận không phải là RPi cụ thể ...

* Địa chỉ máy chủ thời gian không có thật


-1

Việc chấm công là tất cả trong phần mềm. Không sử dụng NTP thì không có chấm công.

Nếu bạn muốn kiểm tra xem đồng hồ đã được đặt chưa, chỉ cần sử dụng dateđể xem nếu nó hiển thị epoch Unix, đó là những gì Pi sẽ mặc định.


2
Sai. RPi đặt thời gian hiện tại từ thời gian tắt máy cuối cùng khi không có kết nối mạng. Vì vậy, đồng hồ luôn luôn có một số thời gian ngẫu nhiên sớm hơn thời gian chính xác, không phải là epoch Unix epoch.
Guy

2
Điều đó chắc chắn không đúng với Pi của tôi. Nếu tôi khởi động nó mà không có kết nối mạng thì thời gian là kỷ nguyên. Tôi có thể thấy điều này ngay bây giờ.
Jivings

2
Có lẽ nó phụ thuộc vào sự phân phối.
Alex Chamberlain

1
@AlexChamberlain Có vẻ là một sự khác biệt kỳ lạ.
Jivings

1
@Jivings Nếu có một phần mềm trên Raspbian được gọi fake-hwclock, có lẽ nó sẽ không có trên Arch. Âm thanh giống như loại lông tơ Arch bỏ qua.
Alex Chamberlain
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.