我正在为定制板开发一个Buildroot开发的ARM/ulibc发行版。我在试着理解
如果我这样做,就像我在网上看到的那样:
# date --set "2013-04-09 15:06:30"
Tue Apr 9 15:06:30 CDT 2013
# hwclock --systohc --utc
# hwclock
Tue Apr 9 15:06:39 2013 -0.351552 seconds重新启动,我得到:
.... boot messages ...
... setting system clock to 2013-04-09 20:07:31 UTC (1365538051)
.... boot messages ...
#
# date; hwclock;
Tue Apr 9 15:08:24 CDT 2013
Tue Apr 9 15:08:25 2013 -0.473164 seconds
#
# date -u; hwclock -u;
Tue Apr 9 20:08:44 UTC 2013
Tue Apr 9 15:08:45 2013 -0.397120 seconds
#
# date; hwclock --localtime
Tue Apr 9 15:09:07 CDT 2013
Tue Apr 9 20:09:08 2013 -0.686601 seconds
#那么,似乎时钟认为本地时间是协调世界时吗?出于某种原因,当应用-u时,它实际上应用了时区吗?我有点糊涂。有人能建议我该怎么做吗?
编辑:我应该注意到,作为一个ARM + Busybox + uclibc,精简系统,我没有很多典型的目录和文件,如sysconfig和zoneinfo。
发布于 2013-04-10 00:32:11
--utc告诉hwclock硬件时钟保持UTC,--localtime说硬件时钟保持与系统时钟相同的时区。(更准确地说,硬件时钟与UTC保持与当前系统时钟相同的偏移量--硬件时钟通常不知道DST是否处于活动状态。)这些选项与系统时钟的时区无关。
从理论上讲,这告诉了你你需要知道的一切。在实践中,这可能会令人困惑。
# date -u; hwclock -u;
Tue Apr 9 20:08:44 UTC 2013
Tue Apr 9 15:08:45 2013 -0.397120 seconds“首先,告诉我世界协调时的系统时间。然后,假设硬件时钟保持UTC,本地时区的时间是多少?“
# date; hwclock --localtime
Tue Apr 9 15:09:07 CDT 2013
Tue Apr 9 20:09:08 2013 -0.686601 seconds“首先,告诉我本地时区的系统时间。然后,假设硬件时钟保持本地时间,那么本地时区中的时间是多少?“
在大多数系统上,您可以设置TZ环境变量来设置进程的时区。这是POSIX功能。BusyBox支持这一点(我没有看到在编译时关闭它的选项),我相信uClibc也是这样。在进行时钟同步时,它可以帮助在一段短时间内以协调世界时的方式进行操作:
export TZ=UTC0
date
hwclock发布于 2013-04-09 21:07:30
我使用以下命令设置我的时间信息:
# setup local timezone
rm /etc/localtime
# setup for EDT and EST (+4 EDT; +5 EST)
ln -s /usr/share/zoneinfo/EST5EDT /etc/localtime
# setup for only EST (+5 EST)
#ln -s /usr/share/zoneinfo/EST /etc/localtime
# setup for only Daylight Saving Time
#ln -s /usr/share/zoneinfo/EDT /etc/localtime
rm /etc/timezone
echo "US/Eastern" > /etc/timezone
export TZ="/usr/share/zoneinfo/America/New_York"注意:在此脚本使用date -u MMDDhhmm命令运行后设置系统时钟,使用原子表作为计算机关机后的时间漂移。
https://unix.stackexchange.com/questions/71860
复制相似问题