Date

為什麼本地時間會重置為預設時區?

  • July 7, 2015

我使用以下命令在我們的 Amazon Linux (Centos) 伺服器上設置時區:

ls -al /etc/localtime
-rw-r--r-- 1 root root 118 25 dec  2012 /etc/localtime
sudo mv /etc/localtime /etc/localtime.bak
sudo ln -s /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime

這會備份本地時間文件,因此您可以查看時間是否以及何時設置為正確的時區。最近時間已恢復為預設值。bak 文件還在那裡,所以我知道我過去更改了時間。

這是因為核心更新嗎?

為什麼時間不保持不變,有沒有辦法確保它保持不變?


更新

這是更新的本地時間文件的時間:

$ ls -al /etc/localtime
-rw-r--r-- 1 root root 118 25 jun 19:05 /etc/localtime

看著 /var/log/yum.log 我看到了這個:

Jun 25 19:05:27 Updated: glibc-common-2.17-55.143.amzn1.x86_64
Jun 25 19:05:30 Updated: glibc-2.17-55.143.amzn1.x86_64
Jun 25 19:05:31 Updated: libtiff-4.0.3-20.20.amzn1.x86_64
Jun 25 19:05:31 Updated: glibc-headers-2.17-55.143.amzn1.x86_64
Jun 25 19:05:31 Updated: subversion-libs-1.8.11-1.50.amzn1.x86_64
Jun 25 19:05:32 Updated: subversion-1.8.11-1.50.amzn1.x86_64
Jun 25 19:05:32 Updated: glibc-devel-2.17-55.143.amzn1.x86_64
Jun 25 19:05:32 Updated: libtiff-devel-4.0.3-20.20.amzn1.x86_64
Jun 25 19:05:32 Updated: python26-jmespath-0.7.1-1.9.amzn1.noarch
Jun 25 19:05:32 Updated: python27-jmespath-0.7.1-1.9.amzn1.noarch
Jun 25 19:05:33 Updated: glibc-2.17-55.143.amzn1.i686

所以我懷疑其中一個會這樣做,我猜是 glibc 更新之一。

查看ls -l /etc/localtime以了解更改發生的時間。/var/log/audit/audit.log然後查看日誌,例如/var/log/secure在那個時候可能已經開始的事情。

注意現在systemd已經接管了/etc/localtime,還有一個命令

timedatectl set-timezone <zone>

也可以更改此文件。此外,還有一個systemd-timedated.service提供dbus 服務來更改時區。您還可以查看 systemd 日誌:

sudo journalctl -l|grep timedate

您可以通過執行找到通過安裝 rpm 執行的腳本

rpm -q --scripts glibc

例如對於 glibc。您可以通過在文件上安裝、啟動audit和配置監視來記錄文件中的更改

sudo auditctl -w /etc/localtime -k mymarker

然後查看日誌

sudo ausearch -k mymarker

用 刪除所有規則sudo auditctl -D。您將獲得有關打開或更改文件的任何程序的資訊,但如果它來自一個沒有多大幫助的 shell 腳本,因為該命令將只是rmor ln

也許如果您使用timedatectl set-timezone更改時區而不是自己連結它,它將以進一步更新將接受且不會更改的方式進行。

引用自:https://unix.stackexchange.com/questions/214336