RHEL7、CentOS7提供三種命令行方式方式來設置和顯示日期


RHEL7、CentOS7提供三種命令行方式方式來設置和顯示日期、時間。timedatectl是在RHEL7及CentOS7中新增的systemd的一部分,date是傳統的日期時間設置命令,hwclock單元訪問的是硬件時鍾。

一、timedatectl

[root@Geeklp-Administrator ~]# timedatectl Local time: 六 2017-12-16 19:49:53 CST Universal time: 六 2017-12-16 11:49:53 UTC RTC time: 六 2017-12-16 11:43:53 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: yes NTP synchronized: no RTC in local TZ: no DST active: n/a

默認是開啟你ntp時間同步的,在修改NTP或chrony的時間設置之后不會立即生效,需要重啟timedatectl服務。

[root@Geeklp-Administrator ~]# systemctl restart systemd-timedated.service

(1)修改當前時間 
timedatectl set-time HH:MM:SS 
這個命令同時更新系統時間和硬件時鍾,結果類似於date –set 和 hwclock –systohc 命令。開啟NTP時間同步是不能用這個命令來設置時間,這一點需要注意一下。

[root@Geeklp-Administrator ~]# timedatectl set-time 13:00:27 Failed to set time: Automatic time synchronization is enabled [root@Geeklp-Administrator ~]# timedatectl set-ntp no [root@Geeklp-Administrator ~]# timedatectl set-time 13:00:27 [root@Geeklp-Administrator ~]# timedatectl Local time: 六 2017-12-16 13:01:12 CST Universal time: 六 2017-12-16 05:01:12 UTC RTC time: 六 2017-12-16 05:01:13 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: no NTP synchronized: no RTC in local TZ: no DST active: n/a

系統默認的時間設置使用的UTC,設置系統時間使用本地時間。

timedatectl set-local-rtc boolean

 

boolean值為:yes (或者y, true, t, 1)。當boolean值為no時使用的是UTC時間,此時的值為:no(或者n, false, f, 0),默認值為no。

[root@Geeklp-Administrator ~]# timedatectl set-local-rtc no

如果設置為yes的話可能會有警告,此處不建議修改為yes。 
(2)修改或設置時區。 
列舉出所有可用的時區,鍵入以下命令即可。當然也可以輸入tzselect根據引導進行設置(推薦)。

timedatectl list-timezones

 

在root用戶下鍵入以下命令來修改當前使用的區時。例如我們將區時改為香港。

[root@Geeklp-Administrator ~]# timedatectl set-timezone Asia/Hong_Kong [root@Geeklp-Administrator ~]# timedatectl Local time: 六 2017-12-16 16:43:12 HKT Universal time: 六 2017-12-16 08:43:12 UTC RTC time: 六 2017-12-16 08:43:11 Time zone: Asia/Hong_Kong (HKT, +0800) NTP enabled: no NTP synchronized: no RTC in local TZ: no DST active: n/a

(3)如果使用遠程的NTP時間服務器來提供時間的話,需要使用timedatectl設置將NTP時間同步開啟。

[root@Geeklp-Administrator ~]# timedatectl set-ntp yes [root@Geeklp-Administrator ~]# timedatectl Local time: 六 2017-12-16 16:46:15 HKT Universal time: 六 2017-12-16 08:46:15 UTC RTC time: 六 2017-12-16 08:46:15 Time zone: Asia/Hong_Kong (HKT, +0800) NTP enabled: yes NTP synchronized: no RTC in local TZ: no DST active: n/a

二、date

(1)顯示當前日期和時間

[root@Geeklp-Administrator ~]# date 2017年 12月 18日 星期一 15:45:10 CST

(2)默認情況下,date顯示的是本地時間。如果需要顯示UTC時間,鍵入以下命令:

[root@Geeklp-Administrator ~]# date --utc 2017年 12月 18日 星期一 07:32:43 UTC

(3)我們也可以通過+format來控制顯示信息。

[root@Geeklp-Administrator ~]# date +"%H" 16 [root@Geeklp-Administrator ~]# date +"%M" 23 [root@Geeklp-Administrator ~]# date +"%D" 12/18/17 [root@Geeklp-Administrator ~]# date +"%Y" 2017 [root@Geeklp-Administrator ~]# date +"%F" 2017-12-18 [root@Geeklp-Administrator ~]# date +"%T" 16:23:31 [root@Geeklp-Administrator ~]# date +"%d" 18 [root@Geeklp-Administrator ~]# date +"%Y-%m-%d %H:%M" 2017-12-18 16:26

 

部分可用選項詳見下表:

控制符 描述
%H   小時(for example, 17).
%M   分鍾 (for example, 30).
%S   秒(for example, 24).
%d   月份中的某一天(for example, 16).
%m   月份中的某一個月(for example, 09).
%Y   年份 (for example, 2016).
%F   完整的日期格式 (for example, 2016-09-16). 這個選項相當於: %Y-%m-%d.
%T   完整的時間格式 (for example, 17:30:24). 這個選項相當於%H:%M:%S

(4)通過date命令來修改當前時間。可用date –set或date -s命令。可用選項–utc或-u來指定是否為UTC時間。

[root@Geeklp-Administrator ~]# date --set 12:43:23 2017年 12月 18日 星期一 12:43:23 CST [root@Geeklp-Administrator ~]# date --set 2017-12-19 2017年 12月 19日 星期二 00:00:00 CST [root@Geeklp-Administrator ~]# date --set '2017-12-17 12:43:23' 2017年 12月 17日 星期日 12:43:23 CST [root@Geeklp-Administrator ~]# date --set '2017-12-17 12:43:23' -u 2017年 12月 17日 星期日 12:43:23 UTC [root@Geeklp-Administrator ~]# date --set '2017-12-17 12:43:23' --utc 2017年 12月 17日 星期日 12:43:23 UTC [root@Geeklp-Administrator ~]# date --s '2017-12-17 12:43:23' --utc 2017年 12月 17日 星期日 12:43:23 UTC [root@Geeklp-Administrator ~]# date -s '2017-12-17 12:43:23' --utc 2017年 12月 17日 星期日 12:43:23 UTC

 

需要注意的是:設置完整的日期時間時需要使用引號。

三、hwclock

硬件時鍾,顧名思義,這個時間時存儲在服務器主板上的時鍾。硬件時鍾存儲的值包括:年、月、日、時、分、秒。不存儲時間標准、本地時間、UTC、DST。這些設置存放在/etc/adjtime中,當我們修改時間設置(包括手動設置和自動同步)時該文件被創建。在RHEL6或CentOS6系統中,系統每次關機或重啟都會自動執行這個命令。在RHEL7或CentOS7中,當系統時間向NTP服務器或PTP服務器同步時間后,每隔11分鍾內核自動同步硬件時鍾到系統時鍾。 
(1)顯示硬件時鍾。

[root@Geeklp-Administrator ~]# hwclock 2017年12月18日 星期一 16時39分40秒 -0.110050 秒 [root@Geeklp-Administrator ~]# hwclock --show 2017年12月18日 星期一 16時39分57秒 -0.293885 秒

(2)將硬件時鍾同步給系統時鍾。

[root@Geeklp-Administrator ~]# hwclock -s [root@Geeklp-Administrator ~]# hwclock --hctosys [root@Geeklp-Administrator ~]# hwclock 2017年12月18日 星期一 17時17分39秒 -0.953704 秒

-s和–hctosys效果是一樣的。 

(3)將系統時間寫入硬件時鍾。

[root@Geeklp-Administrator ~]# hwclock -w [root@Geeklp-Administrator ~]# hwclock 2017年12月18日 星期一 17時02分16秒 -0.646804 秒 [root@Geeklp-Administrator ~]# hwclock --systohc [root@Geeklp-Administrator ~]# date 2017年 12月 18日 星期一 17:14:08 CST [root@Geeklp-Administrator ~]# hwclock 2017年12月18日 星期一 17時14分17秒 -0.285800 秒、

(4)手動設置硬件時鍾。使用命令:hwclock –set –date 。
[root@Geeklp-Administrator ~]# hwclock -s --date "12 oct 2013 13:01" [root@Geeklp-Administrator ~]# hwclock 2017年12月18日 星期一 17時09分37秒 -0.047061 秒 [root@Geeklp-Administrator ~]# date 2017年 12月 18日 星期一 17:09:44 CST [root@Geeklp-Administrator ~]# hwclock --set --date "2015-11-23 21:17:23" --utc [root@Geeklp-Administrator ~]# hwclock 2015年11月23日 星期一 21時18分53秒 -0.208850 秒 [root@Geeklp-Administrator ~]# date 2017年 12月 18日 星期一 17:12:54 CST

四、關於時區

1、UTC: 
Universal Time Coordinated 協調世界時,又稱世界標准時間。多數的兩地時間表都以GMT來表示,但也有些兩地時間表上看不到GMT字樣,出現的反而是UTC這3個英文字母,究竟何謂UTC?事實上,UTC指的是Coordinated Universal Time– 世界協調時間(又稱世界標准時間、世界統一時間),是經過平均太陽時(以格林威治時間GMT為准)、地軸運動修正后的新時標以及以「秒」為單位的國際原子時所綜合精算而成的時間,計算過程相當嚴謹精密,因此若以「世界標准時間」的角度來說,UTC比GMT來得更加精准。其誤差值必須保持在0.9秒以內,若大於0.9秒則由位於巴黎的國際地球自轉事務中央局發布閏秒,使UTC與地球自轉周期一致。所以基本上UTC的本質強調的是比GMT更為精確的世界時間標准,不過對於現行表款來說,GMT與UTC的功能與精確度是沒有差別的。 
2、GMT: 
Greenwich Mean Time 格林尼治平均時 
UTC和GMT都與英國倫敦的本地時相同,所以程序中UTC與GMT沒什么不同。意思UTC=GMT是相等的 
十七世紀,格林威治皇家天文台為了海上霸權的擴張計畫而進行天體觀測。1675年舊皇家觀測所(Old Royal Observatory) 正式成立,到了1884年決定以通過格林威治的子午線作為划分地球東西兩半球的經度零度。觀測所門口牆上有一個標志24小時的時鍾,顯示當下的時間,對全球而言,這里所設定的時間是世界時間參考點,全球都以格林威治的時間作為標准來設定時間,這就是我們耳熟能詳的「格林威治標准時間」(Greenwich Mean Time,簡稱G.M.T.)的由來,標示在手表上,則代表此表具有兩地時間功能,也就是同時可以顯示原居地和另一個國度的時間。 
3、Unix時間戳: 
在計算機中看到的UTC時間都是從(1970年01月01日 0:00:00)開始計算秒數的。所看到的UTC時間那就是從1970年這個時間點起到具體時間共有多少秒。 這個秒數就是Unix時間戳。 
4、CST時間: 
CST卻同時可以代表如下 4 個不同的時區: 
Central Standard Time (USA) UT-6:00 
Central Standard Time (Australia) UT+9:30 
China Standard Time UT+8:00 
Cuba Standard Time UT-4:00 
5、CET 
(英語:Central European Time,CET)歐洲中部時間是比世界標准時間(UTC)早一個小時的時區名稱之一。它被大部分歐洲國家和部分北非國家采用。冬季時間為UTC+1,夏季歐洲夏令時為UTC+2。 
6、DST: 
Daylight Saving Time「夏日節約時間」 
是指在夏天太陽升起的比較早時,將時鍾撥快一小時,以提早日光的使用,在英國則稱為夏令時間(Summer Time)。這個構想於1784年由美國班傑明·富蘭克林提出來,1915年德國成為第一個正式實施夏令日光節約時間的國家,以削減燈光照明和耗電開支。自此以后,全球以歐洲和北美為主的約70個國家都引用這個做法。目前被划分成兩個時區的印度也正在商討是否全國該統一實行夏令日光節約時間。歐洲手機上也有很多GSM系統的基地台,除了會傳送當地時間外也包括夏令日光節約時間,做為手機的時間標准,使用者可以自行決定要開啟或關閉。值得注意的是,某些國家有實施「夏日節約時間」的制度,出國時別忘了跟隨當地習慣在表上調整一下,這可是機械表沒有的功能設計哦! 
7、關系: 
UTC=GMT 
CET=UTC/GMT + 1小時 
CST=UTC/GMT +8 小時 
CST=CET+9 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM