为什么本地时间会重置为默认时区?

为什么本地时间会重置为默认时区?

我使用以下命令在 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 更新之一。

答案1

查看ls -l /etc/localtime更改发生的时间。然后查看日志,例如/var/log/audit/audit.log和 ,/var/log/secure了解当时可能开始的事情。

注意现在systemd已经接管/etc/localtime并且有一个命令

timedatectl set-timezone <zone>

这也可以改变这个文件。另外,还有一个systemd-timedated.service提供了数据库总线服务更改时区。您还可以查看 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更改时区而不是自己链接它,它将以进一步更新接受而不改变的方式进行。

相关内容