linux下date命令設定時間的輸出格式和修改時間
阿新 • • 發佈:2020-11-05
目錄
一.關於linux下的時間
在Linux中有硬體時鐘與系統時鐘。硬體時鐘是指主機板上的時鐘裝置,也就是通常可在BIOS畫面設定的時鐘;系統時鐘則是指kernel中的時鐘;所有Linux相關指令與函式都是讀取系統時鐘的設定。當Linux啟動時,系統時鐘會去讀取硬體時鐘的設定,之後系統時鐘獨立運作。
#檢視硬體時間 [root@node5 ~]# hwclock Fri 18 Sep 2020 04:32:24 PM CST -0.429479 seconds #檢視系統時間 [root@node5 ~]# date Fri Sep 18 16:30:46 CST 2020 #時區的註釋: #UTC (Universal Time Coordinated):世界標準時間 #GMT (Greenwich Mean Time):格林尼治時間 #CST (China standard Time):中國標準時間
二.linux下使用date命令設定時間的輸出格式
1.輸出完整日期格式
#date +%F輸出完整日期格式等價於date +%Y-%m-%d
[root@node5 ~]# date +%F
2020-09-18
[root@node5 ~]# date +%Y-%m-%d
2020-09-18
#%y 年份最後兩位數(00-99)
#%Y 年份
#%m 月份(01..12)
#%d 日期(例如:01)
#%H 小時(00-23)
#%M 分鐘(00..59)
#%S 秒(00-60)
2.輸出完整的時間格式
[root@node5 ~]# date "+%Y-%m-%d %H:%M:%S" 2020-09-18 18:07:46 [root@node5 ~]# date "+%F %T" 2020-09-18 18:08:08
3.date -d顯示由字串描述的時間,而不是”當前時間“
#date -d, --date=STRING #首先檢視當前時間 [root@node5 ~]# date Fri Sep 18 18:14:28 CST 2020 #輸出當前時間的下一年 [root@node5 ~]# date -d "+1 years" +%F' '%T 2021-09-18 18:14:25 #在當前時間上都加一,並輸出 [root@node5 ~]# date -d "+1 years +1 months +1 days +1 hours +1 minutes +1 seconds" +%F' '%T 2021-10-19 19:15:06
三.修改linux時間
3.1 在可以訪問Internet情況下修改時間
1.檢視當前時間,當前時間是不對的
[root@node5 ~]# date +%F' '%T
2018-11-02 17:24:48
2.檢視當前時區
[root@node5 ~]# timedatectl
Local time: Fri 2020-09-18 17:28:38 CST
Universal time: Fri 2020-09-18 09:28:38 UTC
RTC time: Fri 2020-09-18 09:28:39
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
3.設定當前時區為上海:Asia/Shanghai
[root@node5 ~]# timedatectl set-timezone Asia/Shanghai
4.使用ntp服務同步上海授時中心時間
#如果沒有安裝ntp服務則需要安裝
[root@node5 ~]# yum install -y ntp
#啟動ntp服務
[root@node5 ~]# systemctl start ntpd
#檢視ntp服務狀態,為running則為啟動成功
[root@node5 ~]# systemctl status ntpd
● ntpd.service - Network Time Service
Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2018-11-02 17:27:28 CST; 2s ago
Process: 9687 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 9688 (ntpd)
CGroup: /system.slice/ntpd.service
└─9688 /usr/sbin/ntpd -u ntp:ntp -g
#此命令為同步上海授時中心時間
[root@node5 ~]# ntpdate ntp.api.bz
18 Sep 17:29:04 ntpdate[9771]: the NTP socket is in use, exiting
#再次檢視時間發現時間已經恢復正常
[root@node5 ~]# date +%F' '%T
2020-09-18 17:29:44
#ntp同步常用伺服器:
#中國國家授時中心:210.72.145.44
#NTP伺服器(上海) :ntp.api.bz
#美國:time.nist.gov
#復旦:ntp.fudan.edu.cn
#微軟公司授時主機(美國) :time.windows.com
#臺警大授時中心(臺灣):asia.pool.ntp.org
5.使用crontab設定定時同步時間任務,每天晚上23:59自動同步時間
#編寫定時任務
[root@node5 ~]# crontab -e
no crontab for root - using an empty one
59 23 * * * ntpdate ntp.api.bz
"/tmp/crontab.D94MU3" 1L, 32C written
crontab: installing new crontab
#檢視定時任務
#每天晚上23:59自動同步時間
[root@node5 ~]# crontab -l
59 23 * * * ntpdate ntp.api.bz
3.2 在無法訪問Internet情況下修改時間
1.date -s, --set=STRING把時間設為字串所描述的時間
[root@node5 ~]# date -s "2018-11-02 17:11:59"
Fri Nov 2 17:11:59 CST 2018
[root@node5 ~]# date +%F' '%T
2018-11-02 17:12:56