1. 程式人生 > >實現嵌入式linux自動同步網路時間---NTP

實現嵌入式linux自動同步網路時間---NTP

因為ARM板斷電重啟問題,為保證能獲取到準確的實時時間,所以需要實現自動從網路上獲取時間,這就需要用到NTP。NTP是網路時間協議(Network Time Protocol)的簡稱,它是用來同步網路中各個計算機裝置的時間的協議。目前有第三方的程式碼可以支援NTP,本文講訴ntpclient的用法。

ntpclient is an NTP (RFC-1305) client for unix-alike computers. Its functionality is a small subset of xntpd, but IMHO performs better (or at least has the potential to function better) within that limited scope. Since it is much smaller than xntpd, it is also more relevant for embedded computers.
ntpclient is Copyright (C) 1997-2015 Larry Doolittle, and may be freely copied and modified according to the terms of the GNU General Public License, version 2.

下載好後,解壓,進入解壓後的目錄進行交叉編譯

1.修改Makefile

# To cross-compile
    CC = arm-none-linux-gnueabi-gcc

2.交叉編譯

make

3.拷貝編譯得到的ntpclient檔案至目標板/sbin/目錄下,並加可執行許可權chmod  +x   ntpclient

然後我們需要一個網路授時伺服器網址

這個是授時中心網頁,在這個上面可以找到需要的授時中心網址

然後我們在開發板上執行程式

 ntpclient -s -d -c 1 -i 5 -h 202.108.6.95

裝置會返回如下

[[email protected]
]# ntpclient -s -d -c 1 -i 5 -h 202.108.6.95 Configuration: -c probe_count 1 -d (debug) 1 -g goodness 0 -h hostname 202.108.6.95 -i interval 5 -l live 0 -p local_port 0 -q min_delay 800.000000 -s set_clock 1 -x cross_check 1 Listening... Sending ... packet of length 48 received Source: INET Port 123 host 202.108.6.95 LI=0 VN=3 Mode=4 Stratum=2 Poll=4 Precision=-23 Delay=961.3 Dispersion=40679.9 Refid=10.69.2.34 Reference 3750052005.779027 (sent) 3590806877.094690 Originate 3590806877.094690 Receive 3750052666.964639 Transmit 3750052666.964667 Our recv 3590806877.137947 Total elapsed: 43425.00 Server stall: 27.02 Slop: 43397.98 Skew: 159245789848483.56 Frequency: 0 day second elapsed stall skew dispersion freq set time to 1541063866.964667000 41560 22877.138 43425.0 27.0 159245789848483.6 40679.9 0

其中那些引數可以閱讀解壓後的目錄下的README檔案,裡面有詳細的說明,需要提示的是-g不能使用,可能是嵌入式裝置不支援。

使用date來檢視一下系統時間:

Thu Nov  1 17:44:25 CST 2018

如果時區不是中國的東八區,可設定環境變數

export TZ=CST-8
設定後就可以顯示中國時間了。

接下來是將前面命令加入開發板啟動指令碼,從而實現上電自動同步網路時間。

1.在開機指令碼(我的是/etc/init.d/rcS)中修改下面幾句話:

       #date -s "2018-10-31 11:20:35"     (註釋掉這一行)

       ntpclient -s -d -c 1 -i 5 -h 202.108.6.95 >/dev/null &   (加入這一行,需加在獲取網路命令列之後,確保先有網)

2.然後是新增系統環境變數,讓開機後自動使用東八區(若之前已修改過系統硬體時鐘配置檔案,已改為東八區,則無需此步操作)

開發板檔案系統/etc/profile中新增

export TZ=CST-8

然後就可以當開發板上電自動同步時間了。

相關推薦

實現嵌入式linux自動同步網路時間---NTP

因為ARM板斷電重啟問題,為保證能獲取到準確的實時時間,所以需要實現自動從網路上獲取時間,這就需要用到NTP。NTP是網路時間協議(Network Time Protocol)的簡稱,它是用來同步網路中各個計算機裝置的時間的協議。目前有第三方的程式碼可以支援NTP,本文講訴n

Linux 自動同步伺服器時間

介紹  Linux伺服器執行久時,系統時間就會存在一定的誤差,本篇文章就來介紹怎樣使伺服器的時間和網路伺服器的時間同步。 環境:centos 網路時間伺服器 首先得確保這些伺服器都能ping通否則是無法時間同步的。否則會報錯“no server suitable for synchroni

linux主機同步網路時間

1、首先檢視系統時區 [[email protected] centos]# cat /etc/sysconfig/clock ZONE="Asia/Shanghai" cp /usr/

VM虛擬機器系統時間同步網路時間並登入使用者自動校正時間

原文出處: http://blog.51cto.com/wutou/1932317 VM虛擬機器大家都用,我在用完後,經常使用“掛起客戶機”,但是這樣一來,系統恢復啟動很快,但是少了正常的系統自檢,包括和網路同步時間。 今天在虛擬機器上測試“find /root/Text -mtime +3 -name

Linux運維之ntpdate同步網路時間

自己的Linux伺服器的時間和PC機上的時間不太對,打log的時間對不上,不太方便調式資訊的判斷

linux 修改系統時間 同步網路時間

date -s time  修改系統時鐘時間為time hwclock/clock 命令檢視、設定硬體時間 檢視系統硬體時鐘 hwclock  --show 或者 clock  --show 設定硬體時間  hwclock --set --date=

linux下使用ntpdate同步網路時間

為什麼需要網路同步時間: Linux伺服器執行久時,系統時間就會存在一定的誤差,一般情況下可以使用date命令進行時間設定,但在做資料庫叢集分片等操作時對多臺機器的時間差是有要求的,此時就需要使用ntpdate進行時間同步 安裝ntpdate [[em

Linux伺服器同步標準時間

我是一個科幻電影迷,尤其是特種部隊型別的。劇中在行動前,隊長都需要把大家聚在一起,然後對一下表,以便隊員可以在指定的時間行動。 在叢集架構中,需要很多臺伺服器一起配合處理資料,伺服器也需要對錶,這樣它們才會知道,什麼時間將哪些資料傳入哪些伺服器以便處理。 那我們如何同步Linux伺服

centos7同步網路時間並修改時區

安裝ntpdate工具 # yum -y install ntp ntpdate 設定系統時區為上海 # timedatectl set-timezone Asia/Shanghai  設定系統時間與網路時間同步 # ntpdate 0.asia.pool.ntp.org #

centos 6.5 同步網路時間

Linux的時間分為System Clock(系統時間)和Real Time Clock (硬體時間,簡稱RTC)。 系統時間:指當前Linux Kernel中的時間。 硬體時間:主機板上有電池供電的時間。 檢視系統時間的命令: #date 設定系統時間的命令:

國外linux伺服器同步北京時間

公司伺服器宕機重啟後又要重新同步北京時間,但過程中遇到了一點不一樣的問題,在此記錄下。 首先由於伺服器預設是美國時間,所以先更改時區: 將 /usr/share/zoneinfo目錄下的上海時間覆蓋/etc/localtime目錄下預設的美國西部時間,然後輸入命令可以看到時區已經改成東八

嵌入式linux 自動獲取IP 及 自動校時

最近要呼叫百度人臉識別API做個東西,發現百度API在桌面端QT程式跑的賊溜,可以到了嵌入式板子上發現就post沒了返回資訊。 一、嵌入式端udhcpc自動獲取IP 1.在開發板建立資料夾

CentOS 7 機器時間同步網路時間

安裝外掛 ntpdate sudo yum install ntp 更新時間 sudo ntpdate time.nist.gov 執行成功後就可以看到: 28 Mar 13:56:09 ntpdate[30991]: step tim

嵌入式linux自動掛載u盤的方法MDEV自動掛載U盤方法

在/etc/medv.config檔案中加入如下程式碼: linux自動mountU盤到usbkey資料夾: linux新增u盤自動掛載的指令碼: /etc/mdev.conf修改如下: sd[a-z]           0:0 777 * if [ $ACTION =

嵌入式linux自動登入

原文在 http://www.cnblogs.com/masky/p/3175221.html 最近又把同事的fl2440板子拿過來跑了起來,沒有太大收穫,就解決了一個自動登入的問題: ::respawn:/sbin/getty -L ttySAC0 115200 vt

網路時間協議介紹以及伺服器同步網路時間

# NTP介紹 網路時間協議(英語:Network Time Protocol,縮寫:NTP)是在資料網路潛伏時間可變的計算機系統之間通過分組交換進行時鐘同步的一個網路協議,位於OSI模型的應用層。自1985年以來,NTP是目前仍在使用的最古老的網際網路協議之一。NTP由特拉華大學的David L. Mill

NTP協議網路時間同步 ios中應用 實現秒殺倒計時

專案中需要實現秒殺倒計時功能,手機客戶端本地系統時間有被修改的可能,因此無法獲取本地時間來做,下面看實現程式碼吧 -(void)startTimerShow { self.ysmagTimer = [NSTimerscheduledTimerWithTimeInterv

系統日誌管理,時間同步服務,linux下的網路配置

####系統的日誌管理#### #2.rsyslog的管理# /var/log/messages ##服務資訊登陸 /var/log/secure ##系統登陸日誌 /var/log/cron ##定時任務日誌 /var/log/maillog ##郵件日誌 /var/log/boot.lo

完全解除linux叢集時間同步問題(老大同步網路,小弟同步老大)

首先確保叢集已經正常使用(搭建叢集完畢) 叢集時間同步 時間同步的方式:找一個機器,作為時間伺服器,所有的機器與這臺叢集時間進行定時的同步,比如,每隔十分鐘,同步一次時間。 第一步 配置小弟同步老大的操作 配置時間同步實操: 1.時間伺服器配置(必須 root 使用者) 檢查

Linux安裝SVN實現自動同步到Web目錄

一:安裝SVN1,檢查伺服器是否安裝SVN svn --version 已安裝: svn, version 1.6.11 (r934486) compiled Aug 17 2015, 08:37:43