如何获得系统映像的时区?

我想获得一个系统的时区。 现在有些警告

  • 我使用Linux,目标系统将是UNIX。
  • 我将只使用系统映像,即。 而不是直播系统,但分区将被挂载。
  • 我最终会编写脚本

我正在考虑使用/ etc / localtime,但有时这是一个真正的文件,有时是一个符号链接。 无论如何,我似乎无法得到parsing文件格式的描述。

有人有主意吗?

谢谢

该文件将是二进制格式的tz文件格式。 如果你知道Perl,你可以使用DateTime :: TimeZone :: Tzfile来parsing它。 如果它是一个符号链接它不应该mater因为如果它被安装,你可以按照它。

最后,如果你可以控制图像创build,我强烈build议你设置系统时间UTC。

你知道这些UNIX是什么味道吗?

除了/ etc / localtime之外,

  • Redhat变体使用/etc/sysconfig/clock
  • Debian变体使用/etc/timezone

残忍的方式….:p如果安装只读,触摸一个文件,然后… ls -lah ….

那么你将有足够的时间来创build文件。 意思是……系统的时间+/-几秒钟。

或者以某种方式尝试明确地修改某些内容,或者隐式地查看时间:>

在Linux系统上处理这个问题的一个简单方法是使用file命令;

 file /etc/timezone 

要么

 file /etc/sysconfig/clock 

然而,正如你可能正在使用UNIX系统的图像(我希望它的Solaris就像我熟悉的那样),它可能会稍有不同。

没有为你写实际的脚本,这是伪代码

 get mount if mount is ext3 ... then assume linux if exists /etc/timezone then check if file is ascii or gz if ascii then cat the timezone else if exists /etc/redhat-release then assume redhat TZ = cat /etc/sysconfig/clock fi 

是的,它不够优雅,但你应该得到我的漂移。 所以你可以根据挂载在操作系统上做一些假设。

这个过程对于说Solaris安装是一样的,你可以计算出文件的位置,使用file命令来确定文件types,然后从cat或者grep ^ TZ获取它的内容

希望有所帮助。

在命令行中,您可以通过运行以下方式比读取/ etc / localtime更安全:

 date +%Z