Linux,時鐘和時間

2021-08-29 08:57:12 字數 2289 閱讀 7298

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。參考後面「一些應用程式中時間錯誤」。

設定系統時鐘:

在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 時間2023年1 月1 日午夜開始的秒數來儲存和計算時間,無論您的硬體時鐘是否用utc 儲存。轉換到本地時間的工作是執行時完成的。這樣做的乙個妙處是,如果某人從不同的時區使用您的計算機,他可以設定時區環境變數,所有的日期和時間可以按他的時區正確顯示。

如果自utc 2023年1 月1 日開始的秒數用儲存為帶正負號32位整數,如同在您的linux/intel 系統上一樣,您的時鐘將在2023年停止工作。linux 沒有y2k 問題,但是確實存在2023年的問題。令人期望的是,那時我們都會使用64位系統來執行linux 了。64位整數將使我們的時鐘一直執行到大約2922.71億年。

其它值得一看的程式:

* rdate ──從遠端機器獲得當前時間;可以用來設定系統時間

* xntpd ──類似rdata ,但是它是相當精確的,並且您需要有永久的網路鏈結xntpd 持續地執行,記錄網路延時、時鐘漂移等事件但是也有乙個程式( ntpdate ) 包括在內,像rdate 一樣設定當前時間。

* date(1)

* hwclock(8)

* /usr/doc/howto/mini/clock

Linux中的時鐘與時間

日期 2010 02 04 hz 核心通過定時器中斷來跟蹤時間流,時鐘中斷由系統定時硬體以週期性的間隔產生,這個間隔由核心根據hz的值設定。hz與體系結構有關,定義在中或者該檔案包含的某個子平台相關的檔案中。預設值為50 1200,x86的預設值為1000。如果想改變系統時鐘中斷的頻率,可以修改hz...

Linux系統時鐘與硬體時鐘

linux系統有兩個時鐘 乙個是由主機板電池驅動的硬體時鐘 real time clock 也叫做rtc或者叫cmos時鐘。當作業系統關機的時候,用這個來記錄時間,但是對於執行的系統是不用這個時間的 另乙個時間是系統時鐘 system clock 也叫核心時鐘或者軟體時鐘,是由軟體根據時間中斷來進行...

實時(RTC)時鐘,系統時鐘和CPU時鐘

最近在學stm32的時候看到rtc時鐘和系統時鐘,不知道區別在 於是上網查了一下。實時時鐘 rtc時鐘,用於提供年 月 日 時 分 秒和星期等的實時時間資訊,由後備電池供電,當你晚上關閉系統和早上開啟系統時,rtc仍然會保持正確的時間和日期。系統時鐘 是乙個儲存於系統記憶體中的邏輯時鐘。用於系統的計...