我使用以下命令在 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 脚本,则没有多大帮助,因为命令只是rm
or ln
。
也许如果您用来timedatectl set-timezone
更改时区而不是自己链接它,它将以进一步更新接受而不改变的方式进行。