根据localtime
来自 Linux 手册页:
它应该是指向 /usr/share/zoneinfo/ 的绝对或相对符号链接,后跟时区标识符,例如“Europe/Berlin”或“Etc/UTC”。
这是我的环境中的输出ls -la /etc/localtime
,它不是符号链接:
-rw-r--r--. 1 root root 724 Apr 3 2012 /etc/localtime
并为cat /etc/localtime
TZif2їԒazpҹӂ
答案1
可能发生的情况是制作了区域文件的副本,而不是符号链接或硬链接。
您可以通过比较系统上安装的区域文件的哈希值来确定来源。
$ sha256sum /etc/localtime
821d6d97e3d34a3de2315279260e139adf484e581b4d187f8e6b532403b0f1c6 /etc/localtime
$ find /usr/share/zoneinfo/ -type f -exec sha256sum "{}" + |grep 821d6d97e3d34a3de2315279260e139adf484e581b4d187f8e6b532403b0f1c6
821d6d97e3d34a3de2315279260e139adf484e581b4d187f8e6b532403b0f1c6 /usr/share/zoneinfo/posix/America/Kentucky/Louisville
821d6d97e3d34a3de2315279260e139adf484e581b4d187f8e6b532403b0f1c6 /usr/share/zoneinfo/posix/America/Louisville
821d6d97e3d34a3de2315279260e139adf484e581b4d187f8e6b532403b0f1c6 /usr/share/zoneinfo/America/Kentucky/Louisville
821d6d97e3d34a3de2315279260e139adf484e581b4d187f8e6b532403b0f1c6 /usr/share/zoneinfo/America/Louisville
第二个字段中的 ls 输出中的“1”表示该文件有 1 个硬链接,因此它不是指向与 zoneinfo 路径中的原始文件相同的文件的链接。
在现代 Fedora 上,您可以使用 timedatectl
timedatectl list-timezones
或者
timedatectl set-timezone time_zone
否则,只需从 /usr/share/zoneinfo/ 中 ln -sf 覆盖 /etc/localtime 中的相应区域文件(以防万一,进行备份!)
我怀疑这种情况一定是有问题的,之所以最好有链接而不是副本,是因为软件包更新可能会改变时间规则。但这是 Fedora 17,已经有 10 年历史了……所以它没有得到任何更新;)