- 论坛徽章:
- 0
|
我在安装linux中遇到这样的问题, 我用tzselect选择了时区.
用户登录以后,发现时间不对, 我用env发现TZ没有设置,我在用户
的.bash_profile中手工增加了TZ="Asia/ChongQing";export TZ.这
下用户的时间正确了,但问题出现了,我收邮件时发现发信时间不对
了。
然后我首先去到/etc/sysconfig中修改clock这个文件,原来是
UTC=0改为UTC=1.重启发现发信时间正常了,但用户时间又不对了。
好奇怪!UTC是什么,与时区TZ有什么关联?
原来Linux中的时间有两种:UTC和localtime.UTC是指世界时,
它表示从1970.1.1 0:00以来的时间。而localtime是指本地时间。
在/etc/sysconfig/clock中UTC=1是指将使用UTC时间,UTC=0表示使
用localtime.
如何设置呢?首先进你机器的CMOS看一下CMOS的时间,如果是本
地时间,则在clock中设置UTC=0,并且不用设TZ。如果是UTC时间,则
设UTC=1, 并设TZ环境变量的值(在/etc/login.defs中)。
看一下你的/etc/rc.d/init.d/setclock这个脚本,其实它是在
机器启动时执行这样的命令:
根据/etc/sysconfig/clock中的设置:
UTC=0执行的是:
hwclock --hctosys --localtime
UTC=1执行的是:
hwclock --hctosys --utc
=============================================================================================
过程很简单。在debian中/etc/rcS.d好像是在每次启动的时候都会运行的。我找到了S18hwclock这个符号链接(不知道它联到哪里去了
![]()
),看看里面的内容如下:
WARNING: if your hardware clock is not UTC/GMT, this script(hwclockset.sh) must know the local time zone.This information is stored in /etc/localtime. This might be a problem is your /etc/localtime is a symlink to something in /usr/share/zoneinfo AND /usr isn't in the root partition! The workaround is to define TZ either in /etc/default/rcS, or in the proper place below.
我也不想去设TZ了,所以就想把 localtime的信息改一下就行了。我的localtime是个符号链接(以前肯定是联错了),而且我的/usr就在root分区上。这下就好办了。进入/usr/share/zoneinfo/Asia把里面的Shanghai链接到/etc/localtime,注消,登陆,哈哈,时间就对了
===============================================================================================
我在AIX中还遇到过一次非常荒唐的情况
TZ变量标准值应该是UTC+8
结果那台机器的TZ变量竟然不知道被谁改成了
TZ=UTC+86ZM0
(估计他是把下一行的某些字符弄上来了)
结果得到了比UTC早86个小时的时间……
系统上的websphere和db2总是范毛病,找了2天没找到原因,结果无意间发现了系统时间差得很厉害,一检查才发现……
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/8676/showart_56286.html |
|