linux-系统时间
系统时间
一台Linux服务器有两个时间源,一个是硬件时间,即服务器硬件CMOS维护的时间,还有一个是软件时间,即操作系统维护的时间,前者通过hwclock命令来访问,后者则主要通过date命令来访问。
# 获取当前时间
$ date
Fri Jan 23 15:22:16 CST 2015
# 以特定格式输出当前时间,格式字符串前以"+"开头,例如获得当前时间的epoch
$ date +%s
1421998051
# 设置当前时间
$ sudo date -s "2015-01-22 00:00:00"
Thu Jan 22 00:00:00 CST 2015
设置时间需要root的权限。 hwclock命令用于访问服务器的硬件CMOS时间,无论读取还是设置都需要root权限
# 获取系统硬件时间
$ sudo hwclock
Fri 23 Jan 2015 03:33:17 PM CST -0.567492 seconds
# 设置操作系统的软件时间,与系统硬件时间同步
$ sudo hwclock -s
# 设置系统硬件时间,与操作系统的软件时间同步
$ sudo hwclock -w
时间同步
Linux操作系统维护的软件时间随着服务器的长时间运行会出现漂移,最终会越来越不准确。不准确的系统时间会对依赖时间的服务带来影响,例如数据库,认证等,因此需要维持一个相对准确的服务器时间。
目前,一般通过ntp服务来将本地时间和线上的时间服务保持同步,维护一个相对准确的系统时间。
CentOS下安装配置ntp服务的步骤如下:
# 安装ntp服务的软件包
sudo yum install ntp
# 将ntp服务设置为缺省启动
sudo chkconfig ntp on
# 修改启动参数,增加-g -x参数,允许ntp服务在系统时间误差较大时也能正常工作
sudo vi /etc/sysconfig/ntpd
# 启动ntp服务
sudo service ntpd restart
Ubuntu/Debian下安装配置ntp服务的步骤如下:
# 安装ntp服务的软件包
sudo apt-get install ntp
# 修改启动参数,增加-g -x参数,允许ntp服务在系统时间误差较大时也能正常工作
sudo vi /etc/default/ntp
# 启动ntp服务
sudo service ntp restart
ntp服务运行后,可以通过如下命令查看与上游时间服务器的同步情况
ntpd -p
时区
时区也是一个比较重要的时间参数,设置正确的时区能为我们的工作提供方便,避免困扰。目前美团云主机设置的时区都是中国标准时间(CST),通过下面方式更改云主机的时区配置。
对于大部分Linux系统,各个时区设置文件放在/usr/share/zoneinfo/中,将/etc/localtime通过文件链接指向欲设置的时区配置文件即可。例如
# 将系统时区改为上海时间 (亦即CST时区)
rm -rf /etc/localtime
$ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#
sudo timedatectl set-timezone 'Asia/Shanghai'
#
echo "Asia/Shanghai" > /etc/timezone
- 时区的设置文件:
/etc/timezone - 时间相关文件:
/etc/localtime - 时间相关的文件:
/usr/share/zoneinfo/Asia这里边放着亚洲主要城市的时间
tzselect
https://blog.csdn.net/weixin_42167759/article/details/90653484
注意
GMT(Greenwich Mean Time,格林威治标准时间):
是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。
UTC(Universal Time/Temps Cordonné 世界标准时间)
CST(Central Standard Time 國家標準時間,一說中原標準時間); 中国标准时间(China Standard Time)
GMT + 8 = UTC + 8 = CST

浙公网安备 33010602011771号