Raspberry Pi开发之旅-同步时间
使用htpdate同步时间
由于树莓派板子上没有 RTC 硬件和电池,因此树莓派上的系统时间重启是保存不了的。网上已经有人想到应对 NTP 被防火墙封掉类似的需求了,开源的 htpdate 命令直接使用 HTTP 协议来进行系统时间同步,项目主页在这里:
https://github.com/iridium77/htpdate
htpdate 的原理也非常简单,直接解析 HTTP 协议头中的服务器时间信息,然后设置本地时间,我们来看百度返回的 HTTP 头:
HTTP/1.1 200 OK
Date Mon, 13 Oct 2014 16:05:18 GMT
Content-Type text/html
Transfer-Encoding chunked
Connection Keep-Alive
Cache-Control private
Expires Mon, 13 Oct 2014 16:05:18 GMT
Server BWS/1.1
BDPAGETYPE 2
BDQID 0x8b40c1f700000bd4
BDUSERID 13923551
Set-Cookie BDSVRTM=133; path=/
Set-Cookie BD_HOME=1; path=/
上面的 Date Mon, 13 Oct 2014 16:05:18 GMT 就是百度的 Web 服务器上的系统时间了。
htpdate 命令做时间同步会有 0.5 秒左右的误差(看看 HTTP 头就知道里面很多时间都是以秒为单位哈),对于我的树莓派来说就完全没有关系,如果对这个比较在意的话只能尽量用 NTP 时间同步了。
htpdate 使用上也很简单,简单编译安装之后把这条命令加到 Raspberry Pi Raspbian 系统的 /etc/rc.local 文件中(不加 -t 参数基本不能同步成功哦):
htpdate -t -s ntp.neu.edu.cn
然后重启树莓派就可以正常同步系统时间了。
使用局域网NTP服务器同步时间
1、配置局域网NTP服务器
下载地址:https://www.meinbergglobal.com/english/sw/ntp.htm
按默认步骤安装即可。
2、修改配置文件ntp.conf
配置文件默认路径为:C:\Program Files (x86)\NTP\etc\ntp.conf
去掉
- #server 127.127.1.0
- #fudge 127.127.1.0 stratum 12
前的#
保存
笔者改完后的配置文件内容如下
- # NTP Network Time Protocol
- # **** ATTENTION ****: *You have to restart the NTP service when you change this file to activate the changes*
- # PLEASE CHECK THIS FILE CAREFULLY AND MODIFY IT IF REQUIRED
- # Configuration File created by Windows Binary Distribution Installer Rev.: 1.27 mbg
- # please check http://www.ntp.org for additional documentation and background information
- # restrict access to avoid abuse of NTP for traffic amplification attacks
- # see http://news.meinberg.de/244 for details
- restrict default noquery nopeer nomodify notrap
- restrict -6 default noquery nopeer nomodify notrap
- # allow status queries and everything else from localhost
- restrict 127.0.0.1
- restrict -6 ::1
- # if you need to allow access from a remote host, you can add lines like this:
- # restrict <IP OF REMOTE HOST>
- # Use drift file
- driftfile "D:\Program Files (x86)\NTP\etc\ntp.drift"
- # your local system clock, could be used as a backup
- # (this is only useful if you need to distribute time no matter how good or bad it is)
- server 127.127.1.0
- # but it should operate at a high stratum level to let the clients know and force them to
- # use any other timesource they may have.
- fudge 127.127.1.0 stratum 12
- # Use a NTP server from the ntp pool project (see http://www.pool.ntp.org)
- # Please note that you need at least four different servers to be at least protected against
- # one falseticker. If you only rely on internet time, it is highly recommended to add
- # additional servers here.
- # The 'iburst' keyword speeds up initial synchronization, please check the documentation for more details!
- server 0.asia.pool.ntp.org iburst minpoll 6 maxpoll 7
- server 1.asia.pool.ntp.org iburst minpoll 6 maxpoll 7
- server 2.asia.pool.ntp.org iburst minpoll 6 maxpoll 7
- server 0.us.pool.ntp.org iburst minpoll 6 maxpoll 7
- server 1.us.pool.ntp.org iburst minpoll 6 maxpoll 7
- server 2.us.pool.ntp.org iburst minpoll 6 maxpoll 7
- # End of generated ntp.conf --- Please edit this to suite your needs
3、重启服务
计算机--右键 管理--服务与应用程序--服务,找到Network Time Protocol Daemon,右键重启
或者通过开始菜单重启。两者作用一样
开始--Meinberg--Network Time Protocol--Service Control--Restart NTP Service
4、本地测试
命令行输入
ntpq -p
结果中的第一行如果出现LOCAL,说明NTP服务器进程存在
- Microsoft Windows [版本 6.3.9600]
- (c) 2013 Microsoft Corporation。保留所有权利。
- C:\Windows\system32>ntpq -p
- remote refid st t when poll reach delay offset jitter
- ==============================================================================
- LOCAL(0) .LOCL. 12 l 201 64 10 0.000 0.000 0.000
- +ntp2.aliyun.com 10.137.38.86 2 u 61 64 7 55.655 1.918 7.038
- *118.189.211.186 .PPS. 1 u 62 64 7 117.009 10.206 3.703
- +shim.active-app 218.186.3.36 2 u 124 64 2 105.239 -4.597 2.797
- -104.156.99.226 192.12.19.20 2 u 61 64 5 256.067 -2.231 7.130
- -y.ns.gin.ntt.ne 249.224.99.213 2 u 10 64 5 138.076 11.235 8.025
- C:\Windows\system32>
5、添加防火墙例外
将ntp.exe添加到防火墙例外或者将UDP的123端口添加到防火墙例外
6、再次重启服务器
7、配置树莓派同步时间
首先熟悉几个关于时间命令
- date #查看当前时间
- date -s "2016-03-31 10:18:00" #设置当前时间为2016年3月31日10:18:00
- date -s 2016-03-31 #设置当前日期为2016年3月31日0:00:00
- date -s 10:18:00 #设置当前时间为10:18:00
8、安装ntpdate
sudo apt-get install ntpdate
9、对时
sudo ntpdate 172.26.69.87
其中172.26.69.87为局域网NTP服务器的IP地址
对时后可用date命令查看时间
tip1:如果遇到the NTP socket is in use, exiting的提示,这是因为ntpd也是用的UDP123端口更新时间,我们先将ntp这个服务关掉
sudo service ntp stop
然后再执行
sudo ntpdate 172.26.69.87
tip2:如果遇到no server suitable for synchronization found的提示,多半是因为网络不通或者对应的NTP服务器没有启动。
10、修改时区
默认情况下树莓派使用的是UTC时间,与北京时间相差8小时,所以需要修改时区
tzselect命令并不能真正的修改
正确的做法是替换掉时区文件
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改之后用date查看到的是CST时间
11、添加局域网NTP服务器地址
修改配置文件ntp.conf
sudo nano /etc/ntp.conf
在server项目前面添加如下内容
- server 172.26.69.87 prefer
- server 192.168.42.254 iburst
- server cn.pool.ntp.org iburst
- server asia.pool.ntp.org iburst
- server pool.ntp.org iburst
这个配置文件用于ntpd程序同步时间,每次树莓派开机启动后都会启动这个程序,同步的时间需要5分钟。
12、查看时间
date
13、配置开机自启
在实际运行中,如果计算机的时间与网络时间相差超过30分钟,那么ntpd就不会自动同步了,笔者处于每天断电7~8个小时的校园网,所以每次开机必须先用ntpdate强制同步时间,但这个进程不能执行得太早,太早的话可能还没联网。所以加了个延迟40秒启动。
编辑
sudo nano /usr/bin/synctime
内容
- #! /bin/sh
- #延迟40秒启动
- sleep 40s
- #停止ntpd服务
- killall ntpd
- #对时
- ntpdate -u 202.199.131.1
- #开启ntpd服务器
- ntpd -c /etc/ntp.conf
保存
修改脚本执行权限
sudo chmod a+x /usr/bin/synctime
加入开机启动
sudo nano /etc/rc.local
#在exit 0前面添加
sudo /usr/bin/synctime > /dev/null 2>&1
保存
修改执行权限
sudo chmod +x /etc/rc.local
重启
reboot
附:
DJTU内网推荐NTP配置
- server 222.26.224.216 prefer
- server 202.199.131.1 iburst
- server 202.120.2.100 iburst
- server cn.pool.ntp.org iburst
转载于:https://www.cnblogs.com/Pond-ZZC/p/6678579.html
Raspberry Pi开发之旅-同步时间相关推荐
- 为Raspberry Pi开发.NET应用程序:第2部分
目录 介绍 背景 问题描述 解决方案结构 关注点分离 重构 单元测试.模拟和依赖注入 运行代码 兴趣点 一个简单而现实的Raspberry Pi .NET解决方案,演示了项目布局,单元测试和最佳实践. ...
- 楼氏电子推出Raspberry Pi 开发工具包,为新物联网应用和行业语音整合提供支持
新开发工具包捆绑了语音和音频功能测试.原型设计.调试以及整合到智能家居.消费技术.工业等新应用所需的所有硬件.附加开放软件和算法 伊利诺伊州伊塔斯卡--(美国商业资讯)--高级微型声学麦克风与扬声器. ...
- 菜鸟的树莓派Raspberry Pi学习之旅(一)——认识树莓派硬件篇
文章目录 前言 一.树莓派是什么? 二.树莓派有啥功能? 三.树莓派的购买建议 总结 前言 本篇文章及日后可能完成的关于学习树莓派的个人专栏均为记录笔者本人学习使用树莓派之用,仅适合萌新菜鸟小白交流沟 ...
- (六)使用Coral USB Accelerator在Raspberry Pi上部署YOLOv5模型
目录 介绍 Raspberry Pi的初始步骤 准备目录并创建虚拟环境 在Raspberry Pi上安装TFLite解释器和PyTorch 在Raspberry Pi上安装Coral USB Acce ...
- raspberry pi_如何启动新的Raspberry Pi
raspberry pi 如果您一直遵循本系列教程,那么您已经选择并购买了Raspberry Pi开发板和外围设备,现在就可以开始使用它了. 在第三篇文章中,让我们看一下如何启动它. 与您的笔记本电脑 ...
- python树莓派经典书籍推荐_树莓派教程书籍推荐:带你玩转Raspberry Pi
随着<星球大战><复仇者联盟><NASA>等科幻电影的热映,人工制作装置也更加受到人们关注,与这些电影有关的一切设备都显得非常有科技感,格调很高.本期树莓派教程书籍 ...
- 基于Amazon Echo 和 Raspberry Pi 的自动窗帘控制
作者 | Fortware 责编 | 薄荷茶 微信公众号ID | csdn_iot 本指南说明如何整合电动窗帘轨道,Raspberry Pi 和 Amazon Echo,以便您可以请求Alexa打开窗 ...
- 如何在5美元的Raspberry Pi上构建个人开发服务器
In this article, you'll learn how to build a personal dev server by installing Git, Node.js, Rust, a ...
- RASPBERRY PI PICO 开发板 基础测试
▌01 PI PICO 颜色名 十六进制颜色值 颜色 Coral #FF7F50 rgb(255, 127, 80) 1.安装与上载程序 在 RASPBERRY PI PICO 树莓派PICO开发板双 ...
最新文章
- Python的垃圾回收机制(引用计数+标记清除+分代回收)
- html网页视频加滚动字幕,视频加一行滚动字幕
- Tensorflow实现MNIST数据自编码(3)
- 多用继承 android,Android温习之路之继承
- 一篇文章来告诉你可视化是多么重要
- SAP Authenticator apk下载
- 王道计算机网络 网络层整理 超详细版
- 测试员不可不知的几款bug管理工具
- 广州a货翡翠,深圳a货翡翠
- java课堂作业(四)
- 最新Windows SDK for Windows7 开发包下载
- 自动开关机软件哪个好?自动开关机软件盘点
- 计算机基础知识教程word表格,[电脑基础知识]很详细的Word基础图文教程适合初学者。.ppt...
- Drupal7 常用配置
- 计算机硬盘数据如何恢复,怎样进行硬盘数据恢复
- 老有“美女”加你微信?大学生“艳遇”,结果吓一跳...
- i5 13500怎么样相当于什么水平级别
- matlab 一维数组 切片,三维体切片图 - MATLAB slice - MathWorks 中国
- Echarts折线图拐点突出显示效果
- 数据库基础语法--php基础最详细教程
热门文章
- 中国老百姓十大欲望排行榜。
- 波士顿动力机器人解锁跑酷新技能,凭借感知驱动技术适应技能
- 波士顿机器人又有新花样,居然组团来斗舞!
- 大学计算机素材云帆公司,2019高考作文素材考场素材:十年磨一剑,备战为高考...
- 2020ITES深圳工业展完美收官,百超迪能重磅亮相引关注
- 使用自动化工作流聚合信息,实现个人数字生活的信息聚合
- 简易Alpha(Go) Zero教程(A Simple Alpha(Go) Zero Tutorial)
- 6-2 综合成绩排名-结构体二 (100分)
- HCIA-DATACOM网络基础
- 七天学会javascript之体彩11选5的实现(35)