樹莓派系統時間不對
在《初識樹莓派》一文最后一張截圖中其實隱藏了一個我沒有太在意的時間問題,今天在開發樹莓派監控程序的時候才發現。
從圖中我們可以知道上次登錄時間是1970年1月1日星期四的00:03:17分,由此我們可以推斷,新安裝系統的樹莓派默認系統時間應該是1970年1月1日開始的。
很明顯,這個時間與我們期望的當前時間是不符的。我們需要將系統時間修改為和當前時間同步。
第一步:啟用網絡時間協議
為了保證時間的准確性,推薦使用NTP網絡時間協議來同步時間。對的,跟windows中的 Internet 時間同步是一樣一樣的。
NTP(Network Time Protocol,網絡時間協議)是用來使網絡中的各個計算機時間同步的一種協議。NTP可以使計算機時鍾與 Internet 時間服務器同步。 這意味着可以更新計算機上的時鍾,以與時間服務器上的時鍾匹配,這有助於確保計算機上的時鍾是准確的。它的用途是把計算機的時鍾同步到世界協調時間UTC,其精度在局域網內可達0.1ms,在互聯網上絕大多數的地方其精度可以達到1-50ms。
運行以下命令,啟用NTP:
sudo timedatectl set-ntp true
啟用NTP以后,時間就是正常的嗎?我們來通過date命令來查看當前時間:
ubuntu@localhost:/etc$ date Mon Apr 6 08:45:50 UTC 2015
年月日都對了,但是現在是16點啊,系統時間顯示的確是08點,相差8個小時。
這個時候,多年的開發經驗告訴我們,天朝時間比標准時間早8個小時。
我們還想date命令出來的時間與我們的時間完全保持一致,就需要進行第二步操作修改時區。
第二步:修改時區
使用以下命令修改本地時區:
sudo dpkg-reconfigure tzdata
在“Configuring tzdata”中,依次選擇Asia、Chongqing,回車確認,出現了以下提示信息:
cp: cannot create regular file '/etc/localtime.dpkg-new': Read-only file system Current default time zone: 'Asia/Chongqing' Local time is now: Mon Apr 6 08:49:52 UTC 2015. Universal Time is now: Mon Apr 6 08:49:52 UTC 2015. debconf: DbDriver "config": could not write /var/cache/debconf/config.dat-new: Read-only file system
簡單來說,就是文件系統是只讀的,不能創建etc/localtime.dpkg-new文件和不能寫config.dat-new文件。
當前默認的時區是已經改成了我們想要的'Asia/Chongqing',但是本地時間和世界時間還是一樣的,這里還有問題,應該就是只讀文件系統造成時區沒有完全配置。
第三步:使文件系統可寫
通過askubuntu找到了Read-only file system問題的解決辦法,運行以下命令使得文件系統可寫。
sudo mount -o rw,remount /
第四步:重復第二步修改時區
這一次重新配置時區就比較順利了。本地時間變成了CST時間,也就是China Standard Time UTC+8:00 中國沿海時間(北京時間)。
Current default time zone: 'Asia/Chongqing' Local time is now: Mon Apr 6 16:55:50 CST 2015. Universal Time is now: Mon Apr 6 08:55:50 UTC 2015. ubuntu@localhost:/etc$ date Mon Apr 6 17:19:56 CST 2015 ubuntu@localhost:/etc$ timedatectl status Local time: Mon 2015-04-06 17:36:36 CST Universal time: Mon 2015-04-06 09:36:36 UTC RTC time: n/a Time zone: Asia/Chongqing (CST, +0800) NTP enabled: yes NTP synchronized: yes RTC in local TZ: no DST active: n/a
后記
保證計算機的時間准確性是一個非常重要的事情,特別是我們基於樹莓派還開發一些開關或者數據監控應用,如果時間不准確,可能會引發一些不必要的問題。