linux的時間和時區設置

在linux中與時間相關的文件有

/etc/localtime
/etc/timezone

其中,/etc/localtime 是用來描述本機時間,而/etc/timezone 是用來描述機器所屬的時區。

修改本機時間

cp  /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

在/usr/share/zoneinfo 下存放着不同時區格式的時間文件,執行一下命令,可以講本機時間調整至目標時區的時間格式。

但是!調整了時間格式,本機所屬的時區是保持不變的!

修改本機時區

在linux中,有一些程序會自己計算時間,不會直接採用帶有時區的本機時間格式,會根據UTC時間和本機所屬的時區等

計算出當前的時間。

比如jdk應用,時區爲"Etc/UTC",本機時間改爲北京時間,通過java代碼中的new出來的時間還是utc時間,所以必須得

修正本機的時區。

echo 'Asia/Shanghai'  > /etc/timezone

例如java 程序

vim  Demo.java 

import java.util.Date;
import java.text.SimpleDateFormat;

public class Demo{ 
public static void main(String args[]){ 
System.out.println("This is a test"); 
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(df.format(new Date()));
} 
}

javac Demo.java

java Demo 顯示時間是從/etc/timezone 時區時間獲取;

在data -R 查看是+0800,但是查看的時間就是少12個小時,需要修改 /etc/timezone
################

強行修改系統時間:

格式爲 date -s "YYYY-MM-DD hh:mm:ss"
linux的時間和時區設置

但是這樣修改後,重啓系統後,時間又變成修改前的時間。這是因爲我們只修改了系統時間

而沒有修改硬件時間。我們一般看到的時間爲系統時間,而硬件時間指的是主板上CMOS的

時間,這兩個時間並不總是同步的,一般間隔大約11分鐘會同步一次。

當系統啓動會從CMOS上讀取一次時間爲系統時間,而後系統時間獨立。

通過hwclock --systohc 講系統時間同步到硬件時間

所有可以通過 date -s "YYYY-MM-DD hh:mm:ss" && hwclock --systohc 來修改系統時間。

date -s "20210419 10:11:12"  && hwclock --systohc

注意:對於虛機機可能重啓後,系統時間仍然是主機硬件時間。
注 hwclock --hctosys hc代表硬件時間,sys代表系統時間,即用硬件時鐘同步系統時鐘

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章