歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> linux下設置時鐘和時間

linux下設置時鐘和時間

日期:2017/2/28 17:58:41   编辑:Linux教程

希望能對那些缺乏相關知識的兄弟有所幫助。
本文也很可能回答了有關在linux和win下時間不同的問題,
如文中所述
那就是linux使用了UTC時間,
而win使用本地時間,
所以會時間錯誤。
中文翻譯:
Linux Tips
Linux,時鐘和時間
介紹:
本文檔解釋了如何從linux下設置計算機的時鐘,如何設置您的時區和其它與linux如何保存時間相關的材料。
您的計算機有兩個時鐘,一個是始終運行的、由電池供電的( 硬件的、BIOS或CMOS )時鐘,另一個是由運行在您的計算機上的操作系統維護的( 系統 )時鐘。硬件時鐘通常只在操作系統啟動時用來設置系統時鐘,然後直到重啟或關閉系統,由系統時鐘來記錄時間。在Linux 系統中,您可以選擇用UTC/GMT 時間或本地時間來記錄硬件時鐘。推薦的選項是用UTC 記錄,因為夏令時可以自動記錄。使用UTC 記錄硬件時鐘的唯一不足是,如果您使用雙系統,其它操作系統,如DOS 要求硬件時鐘用本地時間設置,那麼在那個操作系統裡時間將是錯誤的。
設置時區:
Linux 下的時區是通過建立從/etc/localtime[1] 到/usr/share/zoneinfo [2] 目錄下與您所在時區相符的文件的符號鏈結實現的。例如,由於我在南澳大利亞,/etc/localtime就是到/usr/share/zoneinfo/Australia/South的符號鏈結。要建立這個鏈結,運行:
ln -sf ../usr/share/zoneinfo/your/zone /etc/localtime
替換your/zone 為形如Australia/NSW或Australia/Perth 的文件。看看/usr/share/zoneinfo目錄都有什麼時區。
[1] 這裡假設/usr/share/zoneinfo 是到/etc/localtime 的鏈結的前提是RedHat Linux
[2] 在舊版本的系統裡,您會發現使用/usr/lib/zoneinfo而不是/usr/share/zoneinfo。參考後面“一些應用程序中時間錯誤”。
設置UTC 或本地時間:
當Linux 啟動時,一個啟動腳本運行/sbin/hwclock 程序復制當前硬件時鐘時間到系統時鐘。hwclock 假定硬件時鐘設置為本地時間,除非它使用了--utc 參數。在RedHat Linux下您不是編輯啟動腳本,而是編輯/etc/sysconfig/clock 文件,相應的改變UTC 一行為UTC=true或UTC=false。
設置系統時鐘:
在Linux 下設置系統時鐘使用date命令。例如,設置當前時間和日期為July 31,11:16pm,運行date 07312316 ( 注意這裡的時間是24小時制) ;如果您想設置年份為1998,
應該運行date 073123161998 ;要是也想設置秒,運行date 07312316.30或date 073123161998.30。要查看Linux 當前本地時間,使用date,不帶參數。
設置硬件時鐘:
要設置硬件時鐘,我喜歡的方式是首先設置系統時鐘,然後設置硬件時鐘為當前系統時鐘時間,使用命令/sbin/hwclock --systohc (或 /sbin/hwclock --systohc --utc ) ,如果您使用UTC 保存硬件時鐘) 。要查看當前硬件時鐘的設置,不帶參數運行hwclock 。如果硬件時鐘是UTC 保存,而您想看相應的本地時間,運行/sbin/hwclock --utc 。
一些應用程序中時間錯誤:
如果一些應用程序,如date顯示了正確的時間,而另一些則錯誤,而您運行著RedHat Linux 5.0/5.1,您很可能遇到了一個由於將時區信息從/usr/lib/zoneinfo 移動到/usr/share/zoneinfo 引起的bug 。修復的方法是建立一個從/usr/lib/zoneinfo 到/usr/share/zoneinfo 的符號鏈結:
ln -s ../share/zoneinfo /usr/lib/zoneinfo 。
小結:
*/etc/sysconfig/clock 設置硬件時鐘,無論是用UTC 保存還是用本地時間保存
*建立/etc/localtime到/usr/share/zoneinfo/...的符號鏈結來設置時區
*運行date MMDDhhmm 來設置當前系統日期/ 時間
*運行/sbin/hwclock --systohc [--utc]來設置硬件時鐘
其它有趣的注解:
Linux kernel總是按照從UTC 時間1970年1 月1 日午夜開始的秒數來儲存和計算時間,無論您的硬件時鐘是否用UTC 保存。轉換到本地時間的工作是運行時完成的。這樣做的一個妙處是,如果某人從不同的時區使用您的計算機,他可以設置時區環境變量,所有的日期和時間可以按他的時區正確顯示。
如果自UTC 1972年1 月1 日開始的秒數用保存為帶正負號32位整數,如同在您的Linux/Intel 系統上一樣,您的時鐘將在2038年停止工作。Linux 沒有Y2K 問題,但是確實存在2038年的問題。令人期望的是,那時我們都會使用64位系統來運行Linux 了。64位整數將使我們的時鐘一直運行到大約2922.71億年。
其它值得一看的程序:
* rdate ──從遠程機器獲得當前時間;可以用來設置系統時間
* xntpd ──類似rdata ,但是它是相當精確的,並且您需要有永久的網絡連結xntpd 持續地運行,記錄網絡延時、時鐘漂移等事件但是也有一個程序( ntpdate ) 包括在內,像rdate 一樣設置當前時間。
相關信息:
* date(1)
* hwclock(8)
* /usr/doc/HOWTO/mini/Clock

Copyright © Linux教程網 All Rights Reserved