【Linux】修改linux下的时区和系统时间
慕雪年华

用配置文件,修改linux系统下的时区(所用系统 CentOS8)

1.问题来源

在linux上使用python的logging模块的时候,发现了一个问题,那就是模块里面的%(asctime)s打印的时间并非东八区的时间,而是格林尼治时间,比东八区的时间少了8小时

对于日志来说,这怎么行?总不能每次看日志的时候,自己手动给时间加8小时吧!

2.解决

百度了一下后,发现是我系统的时区问题。这个Centos系统是用docker安装的,内部的时区没有正常设置

1
date

通过date命令可以查看系统当前的时间

1
Sat Mar  4 01:29:59 UTC 2023

会发现是3月4日的凌晨1点,但实际上我是在上午9点写下的这篇博客

image

这就需要我们修改时区了!


刚开始,我尝试用tzselect命令进行时区的选择,再选择了上海时区后,系统的时间还是有问题。然后发现,需要修改文件配置,才能让时间生效

1
2
3
/etc/timezone # 时区的配置
/etc/localtime # 时间
/usr/share/zoneinfo/Asia #这里边放着亚洲主要城市的时间

而我的系统中,第一个文件压根不存在!

要用下面的两个命令来修改配置文件(root下执行)

1
echo "Asia/Shanghai" > /etc/timezone
1
2
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

修改完毕,再次执行date命令,可以看到时间已经正常了

1
Sat Mar  4 09:31:33 CST 2023

python的logging模块中打印的时间也正常了

1
2
3
4
5
6
[23-03-04 09:31:39] DEBUG:log.py:debug:9 | test in main
[23-03-04 09:31:39] ERROR:log.py:exception:24 | Exception occurred
Traceback (most recent call last):
File "/home/kook/code/py-test/log.py", line 32, in test
a = 10/0
ZeroDivisionError: division by zero