一台测试服务器,之前设置为Asia/Shanghai
,但是前两天突然时区失效了。
失效之前曾经升级过libc-2.12.so -> libc-2.14.so
,不知道有没有关系。
# date
Fri Feb 10 07:01:22 Local time zone must be set--see zic manual page 2017
# date -R
Fri, 10 Feb 2017 07:14:10 +0000
用了tzselect
重新选择,无效。
重置/etc/localtime
,无效
rm -f /etc/localtime
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
/etc/sysconfig/clock
设置也无效
ZONE="Asia/Shanghai"
TZ="Asia/Shanghai"
UTC=false
ARC=false
最后在.bash_profile
里面设置TZ='America/Nassau'; export TZ
,却只对当前用户有效,对其他用户还是无效的。
# sudo -u www-data date
Fri Feb 10 06:52:02 Local time zone must be set--see zic manual page 2017
系统版本如下:
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.4 (Final)
Release: 6.4
Codename: Final
google,百度都翻了个底,还是找不到解决办法,只能来这里求助了。
PHPz2017-04-26 09:03:59
알겠습니다. 제가 직접 해결했습니다.
이유는 업그레이드로 인해 발생libc.so.6
!
GNU의 TZ 환경 변수에 대한 설명에서는 TZ
에 값이 없으면 기본적으로 시간대가 선택되며 특정 주소는 libc.so.6 라이브러리에 의해 결정된다는 점을 지적합니다. 업그레이드 전 centos의 기본 시간대 파일은 /etc/localtime
이었습니다. 새로 컴파일한 라이브러리를 컴파일할 때 --prefix=/usr/local/glibc-2.14
을 설정했는데, 이로 인해 기본 경로가 /usr/local/glibc-2.14/etc/localtime
이 되었고 당연히 기본 시간대를 찾을 수 없었습니다.
해결책:
으아악완료!