Linux修改系統時間與時區
GMT (Greewich Mean Time)
格林威治標準時間:GMT是老的時間計量標準,根據地球的自轉和公轉來計算時間,也就是太陽每天經過位於英國倫敦郊區的皇家格林尼治天文臺的標準時間就是中午12點,因為本初子午線被定義在通過哪裡的經線,格林尼治標準時間的正午是指當太陽橫穿格林尼治子午線時(也就是在格林尼治上空最高點時)的時間
UTC (Universal time coordinated)
世界協調時間:現在用的時間標準,根據原子鐘來計算時間。由於現在世界上最精確的原子鐘50憶年才會誤差1秒,而GMT是根據地球的轉動來計算時間的,由於地球在它的橢圓軌道里的運動速度不均勻,格林泥治標準時間會與實際的太陽時有誤差,最大誤差達到16分鐘,所以UTC更加精確
CST (China Standard Time )
中國標準時間:比世界協調時間早8小時
CST也同時代表其它三個時區
美國中部時間:Central Standard Time (USA) UTC-6:00
澳大利亞中部時間:Central Standard Time (Australia) UTC+9:30
古巴標準時間:Cuba Standard Time UTC-4:00
CET (Central European Time)
歐洲中部時間:是比世界標準時間(UTC)早一個小時的時區名稱之一。它被大部分歐洲國家和部分北非國家採用
WET (Westerm European Time)
歐洲西部時間: 和世界標準時間(UTC)相同
EET (Easterm European Time)
歐洲東部時間: 是比世界標準時間(UTC)早兩個小時的時區名稱之一。它被部分歐洲國家、北約國家和中東國家採用
linux系統時鐘有兩個,一個是硬體時鐘,即BIOS時間,另一個是系統時鐘,即linux系統Kernel時間。當linux啟動時,系統kernel回去讀取硬體時鐘的設定,然後系統時鐘就會獨立於硬體運作。
date命令檢視、設定系統時間
#date -s 10/16/16 將日期設定為2016年10月16號
#date -s 19:29:44 將時間設定為19點29分44秒
#date 1016192916.44 將日期時間設定為2016年10月16號19點29分44秒(MMDDhhmmYYYY.ss)
hwclock命令檢視、設定硬體時間
#hwclock --set --date="06/18/14 14:55 " (月/日年 時:分:秒)
硬體時鐘與系統時鐘同步:
#hwclock --hctosys hc代表硬體時間,sys代表系統時間,即用硬體時鐘同步系統時鐘
#hwclock --systohc 即用系統時鐘同步硬體時鐘 等於hwclock -w 執行這個命令沒有任何反饋資訊
修改時區
# cat /etc/sysconfig/clock
ZONE="Asia/Shanghai"
UTC=true
# rm -f /etc/localtime
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime linux是依據/etc/localtime檔案內容知道目前系統的時區資訊,這個檔案一般是從/usr/share/zoneinfo/面選擇適當的時區複製過來就可以使用
重啟機器後就可以看到時區更改
通過tzselect命令來修改時區
執行tzselect命令 --> 選擇Asia --> 選擇China --> 選擇Beijing --- 選擇yes ,執行完tzselect命令選擇時區後,時區並沒有更改,只是在命令最後提示你可以執行TZ=‘Asia/Shanghai’ ; export TZ 最終將這行命令新增到/etc/profile檔案中去,然後退出並重新登陸
時間自動同步:
#crontab -e 定時計劃任務,每隔一段時間進行一次同步
10 5 * * * root ntpdate us.pool.ntp.org ; hwclock -w
總結:
呼叫/sbin/hwclock顯示的就是BIOS中的時間莫?未必,這要看/etc/sysconfig/clock中是否啟用了UTC,如果啟用了UTC(UTC=true),顯示的其實是經過時區換算的時間而不是BIOS中真正的時間,如果加上--localtime選項,則得到的總是BIOS中實際的時間。
在/etc/sysconfig/clock中UTC=false時,date、hwclock、hwclock --localtime輸出的時間應該一致
在/etc/sysconfig/clock中UTC=true時,date、hwclock的輸出是一致的,hwclock --localtime的輸出則是UTC時間
系統關閉時會同步系統時間到硬體時鐘,系統啟動時會從硬體時鐘讀取時間更新到系統,這2個步驟要根據/etc/sysconfig/clock檔案中UTC引數來設定時區轉換。