Linux下時區與時間設定方法

來源:互聯網
上載者:User

首先要說明的是我的系統是fedora,其他系統可能不完全相同。

1,時間儲存在硬體即時鐘(RTC)中,RTC由主板電池供電,即使關斷電源也不會造成時間丟失。

2,系統啟動時從RTC擷取時間,這個步驟在rc.sysinit中做:

a,首先從/etc/sysconfig/clock中擷取RTC相關參數UTC/ARC/SRM。UTC為true表示RTC儲存的時間是UTC時間,false表示儲存的是本地時間。ARC與SRM的含義參考hwclock的manpage,一般false即可;

b,根據上面擷取的內容構造hwclock命令的參數,將時間由RTC讀取到系統時鐘。

*需要說明的一點是hwclock的輸出是本地時間,localtime/utc參數只是用來告訴hwclock命令COMS時區是哪個時區。比如Linux系統的系統時區設定為CST(中國標準時間),COMS時間採用牆上時間,即COMS時區也是CST,這時如果使用--utc參數,會讓hwclock誤以為COMS時區為UTC,所以輸出的時間會自動+8。

3,tzset():tzset在程式中用來初始化tzname等全域變數,它首先試圖從環境變數“TZ”中擷取時區,如果TZ環境變數存在,即getenv("TZ")傳回值不為NULL,且包含內容有效,則使用TZ值;如果該變數存在但內容無效,比如包含錯誤的時區名字,則使用UTC;如果該變數不存在,即getenv("TZ")返回NULL,則尋找系統時區設定檔案,一般是/etc/localtime。localtime所指檔案的內容格式可參考tzfile(5)。

4,time():返回自00:00:00 UTC, January 1, 1970到現在所經過的秒數,注意,是UTC。

5,ctime()/localtime()/mktime():這類和時區相關的函數內部會調用tzset,但只是第一次調用tzset會做實際初始化,後面的調用都是直接返回。

6,系統關閉時,如執行shutdown/reboot/poweroff/halt等操作後,系統時間會儲存到RTC中,這是在halt指令碼中完成的,參看/etc/init.d/halt內容。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.