參考:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3637782
linux平台中有硬件時鍾與系統時鍾兩種時鍾,一個是由主板電池驅動的“Real Time Clock”也叫做RTC或者叫CMOS時鍾,硬件時鍾。當操作系統關機的時候,用這個來記錄時間,但是對於運行的系統是不用這個時間的。另一個時間是 “System clock”也叫內核時鍾或者軟件時鍾,是由軟件根據時間中斷來進行計數的,內核時鍾在系統關機的情況下是不存在的,所以,當操作系統啟動的時候,內核時鍾是要讀取RTC時間來進行時間同步。
1、系統時間的讀取與設定
date命令:以指定的形式顯示時間或者設定系統時間。
用法:date [選項]... [+格式]
或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
以給定的格式顯示當前時間,或是設置系統日期。
-d,--date=字符串 顯示指定字符串所描述的時間,而非當前時間
-f,--file=日期文件 類似--date,從日期文件中按行讀入時間描述
-r, --reference=文件 顯示文件指定文件的最后修改時間
-R, --rfc-2822 以RFC 2822格式輸出日期和時間
例如:2006年8月7日,星期一 12:34:56 -0600
--rfc-3339=TIMESPEC 以RFC 3339 格式輸出日期和時間。
TIMESPEC=`date',`seconds',或 `ns'
表示日期和時間的顯示精度。
日期和時間單元由單個的空格分開:
2006-08-07 12:34:56-06:00
-s, --set=字符串 設置指定字符串來分開時間
-u, --utc, --universal 輸出或者設置協調的通用時間
--help 顯示此幫助信息並退出
--version 顯示版本信息並退出
示例1:以指定的格式顯示給定的時間
date -d 20170301 +“%A %B”
運行結果:星期三 三月
示例2:以指定的格式顯示文件中的時間(文件內容為20170301\n 20190611)
date -f /home/sifang/time.txt +"%A %B"
運行結果:
星期三 三月
星期二 六月
示例3:以指定的格式顯示當前時間
date +"%A%B"
運行結果:星期二六月
示例4:顯示文件的最后修改時間
date -r filename
示例5:設定系統時間
date -s 20190611
設置系統時間為2019年6月11時0點0分0秒
date -s 17:55:55
設置系統時間為17點55分55秒
date -s "20190611 17:55:55"
設置系統日期和時間
date -s "2019-06-11 17:00:00"
設置系統日期和時間
示例6:日期的加減
date +%Y%m%d --date="-1 day"
顯示前一天的日期
date +%Y%m%d --date="+1 day"
顯示后一年的日期
date +%Y%m%d --date="-2 month"
顯示前兩個月的日期
2、硬件時間的讀取與設定
hwclock 設置和顯示硬件時間(一般只有root用戶才有權限)
-r, --show 讀取並打印硬件時鍾(read hardware clock and print result )
-s, --hctosys 將硬件時鍾同步到系統時鍾(set the system time from the hardware clock )
-w, --systohc 將系統時鍾同步到硬件時鍾(set the hardware clock to the current system time )
--adjust hwclock每次更改硬件時鍾時,都會記錄在/etc/adjtime文件中。使用--adjust參數,可使hwclock根據先前的記錄來估算硬件時鍾的偏差,並用來校正目前的硬件時鍾。
--debug 顯示hwclock執行時詳細的信息。
--directisa hwclock預設從/dev/rtc設備來存取硬件時鍾。若無法存取時,可用此參數直接以I/O指令來存取硬件時鍾。
--hctosys 將系統時鍾調整為與目前的硬件時鍾一致。
--set --date=<日期與時間> 設定硬件時鍾。
--show 顯示硬件時鍾的時間與日期。
--systohc 將硬件時鍾調整為與目前的系統時鍾一致。
--test 僅測試程序,而不會實際更改硬件時鍾。
--utc 若要使用格林威治時間,請加入此參數,hwclock會執行轉換的工作。
--version 顯示版本信息。
示例1:顯示硬件時間
hwclock -r
或者hwclock
示例2:以給定的時間設定硬件時間
hwclock --set --date "2019-04-05 11:11:11"
示例3:把硬件時間同步給系統時間
hwclock -s
示例4:把系統時間同步給硬件時間
hwclock -w
3、時區的讀取與設置
讀取時區:date -R
或 date +"%Z %z"
timedatectl |grep "Timezone"
設置時區的方法:
方法一:圖形界面
系統--日期與時間設置--時區或者執行system-config-date打開(實際設置的是/etc/sysconfig/clock文件)
方法二:文件拷貝
執行命令ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
(立即生效)
/usr/share/zoneinfo目錄存放時區相關文件。
方法三:tzselect
執行tzselect
,依據提示設置TZ環境變量。
TZ='Asia/Shanghai'; export TZ