Linux系統時間分爲兩種:系統時間和硬件時間。系統時間爲Linux內核時間,硬件時間一般爲BOIS中的RTC時間。Linux內核在啓動時,會嘗試讀取BIOS中的RTC時間,並以此爲基準設置系統時間。內核啓動之後,系統時間和硬件即爲兩個獨立的時間,各自運行。
嵌入式Linux系統開發時,同樣需要提供硬件來爲系統提供時間基準,這個硬件一般就是RTC芯片,比如,rx8010。Linux關於時間的配置包括:系統時間設置、硬件時間設置、時區設置。
時區配置
tzselect命令用於設置系統的當前時區。在桌面系統上,比如,ubuntu或者Debian系統,系統支持完整的時區配置,可以使用tzselect按照命令提示一步一步進行配置,比如,設置Asia/China/Beijing時區
執行tzselect命令 --> 選擇Asia --> 選擇China -->選擇Beijing Time-->Yes保存設置
最終,系統會將TZ=‘Asia/Shanghai’; export TZ配置到~/.profile文件。
嵌入式Linux系統,一般不會提供tzselect命令,那麼時區的配置可以通過直接配置TZ環境變量設置系統時區的。同時,需要在/usr/share/zoneinfo目錄下提供時區相關的配置文件,這裏只配置了Asia的時區。
配置TZ環境變量
$ cat /etc/profile
TZ='Asia/Shanghai'; export TZ
/usr/shared/zoneinfo目錄下必須包含時區信息
# /usr/share/zoneinfo$ ls
Asia PRC
通過date命令可以查到當前的時區信息:
Tue Jul 7 10:00:02 CST 2020 #CST表示東八區
系統時間配置
系統的時間配置方式分爲:手動配置和NTP同步,手動配置一般通過date命令直接設置系統時間,NTP方式通過NTP服務器配置本地的系統時間。
爲了時間的精確性,建議使用NTP方式配置系統時間。
ntpdate 0.cn.pool.ntp.org
如果對於時間精確性要求不高,可以使用date命令直接設置系統時間,date支持的時間配置格式十分的靈活,下面舉幾個簡單的例子,如果有興趣可以通過man date查看更多的用法。
1、將日期設置爲2020年07月6日
[root@linux-node ~]# date -s 07/06/20
2、將時間設置爲10點07分00秒
[root@linux-node ~]# date -s 10:07:00
3、將時間設置爲2020年07月06日 10:08
[root@linux-node ~]# date -s "2020-07-07 10:08:00"
硬件時間配置
hwclock命令用於管理硬件時間,可以通過該命令完成硬件時間的設置,系統時間和硬件時間之後的轉換等。
查看硬件時間
hwclock -r #查看當前硬件時間
Tue Jul 7 02:10:10 2020 0.000000 seconds
同步系統時間和硬件時間
hwclock -w -u
注意:
-w表示將系統時間同步到硬件時間,-u表示硬件時間以UTC時間爲準。
系統啓動時,會通過硬件同步系統時間,系統認爲從硬件取到的UTC時間,之後再按照
本地時區,將UTC時間轉換爲本地時間,所以,爲了使系統設置正確的時區時間,這裏
必須加上 -u選項。
同步系統時間和硬件時間
hwclock -s -u
-s表示將硬件時間同步到系統時間,-u表示硬件時間爲UTC時間,如果硬件時間以UTC時間保存,那
必須使用-u選項。