如何通过/etc/localtime的时区信息逆向查找linux当前设定的城市信息


已知linux系统大多通过例如:


 ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime


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

来设定当前时区。

那么如何通过这个localtime文件逆向查找到本系统设置的城市信息呢?

c Linux C++

zakkary 10 years, 7 months ago

针对你的问题,假如是一个软链接文件,可以通过readlink命令获取源文件地址:


 # readlink /etc/localtime
/usr/share/zoneinfo/Asia/Shanghai

如果不是链接文件,可以通过比较md5的方式来识别,因为大多数环境下应该都是以软链接的形式存在,所以我这里真地拷贝了一次文件来测试:


 # cp /usr/share/zoneinfo/Asia/Shanghai abc
# m=`md5sum abc | awk '{print $1}'`
# find /usr/share/zoneinfo -type f | xargs md5sum | grep "$m"
c103f379c73f61b9eaf39a9a8e0c2cb1 /usr/share/zoneinfo/Asia/Shanghai
c103f379c73f61b9eaf39a9a8e0c2cb1 /usr/share/zoneinfo/PRC

如果有进一步需要,比如用脚本实现:


 if [ -L “/etc/localtime” ]; then  # is symbolic link
    ...
else # normal file
    ...
fi

Amelie answered 10 years, 7 months ago

Your Answer