centos7 时区,centos镜像下载
大家好,今天来为大家分享centos7 时区的一些知识点,和centos镜像下载的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
Centos7修改时区(同步时间,NTP)
要将Centos7的时区修改为中国标准时区,首先需要进行以下步骤:
1.使用命令行工具更改时区设置,具体操作为将时区设置为“Asia/Shanghai”。
2.通过yum包管理器下载并安装ntp组件,确保系统能够进行网络时间同步。
3.注销原有的NTP服务器配置,将其改为阿里云的NTP服务器。
具体操作是将原有的NTP服务器地址行前的注释符号(#)删除,然后添加阿里云的NTP服务器地址。
需要删除的原始配置如下:
#server the internet cluster of ntp servers iburst
#server 1.centos.pool.ntp.org iburst
#server GermanGang History iburst
#server 3.centos.pool.ntp.org iburst
需要添加的阿里云NTP服务器配置如下:
server ntp.aliyun.com iburst
4.重启NTP服务以应用更改。
5.设置NTP服务为开机自动启动,确保每次系统启动时都能自动进行时间同步。
6.使用ntpq命令查看与时间同步服务器的时间偏差。
7.使用ntpq命令查看当前同步的时间服务器。
8.使用ntpq命令查看NTP服务的状态。
9.使用date命令查看当前时间信息。
输出结果将类似于以下格式:
Sat May 8 13:27:00 CST 2021
【UTC】CentOS7修改时区的正确姿势
整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC,Universal Time Coordinated)。
格林威治标准时间(Greenwich Mean Time)指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同,本文中不做区分)
中国标准时间(China Standard Time)【GMT + 8 = UTC + 8 = CST】
夏令时(Daylight Saving Time)指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用。(中国不使用)
RTC(Real-Time Clock)或CMOS时钟,一般在主板上靠电池供电,服务器断电后也会继续运行。仅保存日期时间数值,无法保存时区和夏令时设置。
一般在服务器启动时复制RTC时间,之后独立运行,保存了时间、时区和夏令时设置。
在CentOS 6版本,时间设置有date、hwclock命令,从CentOS 7开始,使用了一个新的命令timedatectl。
Centos7修改系统时区timezone ,解决快、慢8小时问题
如果服务器用非 UTC的时间,时区转换很容易不一致,而且对于有 daylight saving的时区,每年多一小时少一小时的那两天,系统就会出现各种诡异现象。
服务器使用UTC时间,如要显示用户所在时区的本地时间,在客户端转化即可。
# timedatectl
我们可以看到,服务器使用的CST时间
# timedatectl set-timezone UTC
# timedatectl set-time"YYYY-MM-DD HH:MM:SS"
# timedatectl set-time "HH:MM:SS"
# timedatectl
我们可以看到,服务器时间类型更改为UTC了
# ll /etc/locatime
lrwxrwxrwx. 1 root root 25 1月 14 08:30 /etc/localtime->../usr/share/zoneinfo/UTC
实际上是做了一个将
文件 /etc/localtime 做了一个软连接到 /usr/share/zoneinfo/UTC
# ln -s /usr/share/zoneinfo/UTC /etc/localtime
ln:无法创建符号链接"/etc/localtime":文件已存在
# ln -sf /usr/share/zoneinfo/UTC /etc/localtime
做软连接时,需要加-f参数,强制覆盖,不然会显示软链接已存在
# timedatectl set-time"YYYY-MM-DD HH:MM:SS"
# timedatectl set-time "HH:MM:SS" //只设置时分秒
# timedatectl
# clock -w
# date -u //显示UTC时间
CentOS7修改时区的正确姿势
CentOS7上运行Java程序,发现程序生成的时间与当前时间匹配不上,还以为是数据停止更新了,后来发现没有正确使用修改时区的姿势,导致程序时区错误。
正确的修改CentOS7时区的姿势:
# ln -sf/usr/share/zoneinfo/Asia/Shanghai /etc/localtime
其他系统的修改文件可能是/var/etc/localtime.
错误的姿势:通过cp命令覆盖/etc/localtime时间
# cp-f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
通过cp命令修改时区,通过date, data-R命令显示的时区都是正确的,可是对于java程序而言,是错误的。
具体原因在于Java访问系统时区的方式上,可参见文章:
Java TimeZone和 Linux TimeZone问题
该文章很好的说明了Java访问系统时区的方式:
1.如有环境变量 TZ设置,则用TZ中设置的时区
2.在/etc/sysconfig/clock文件中找“ZONE”的值
3.如何2)都没,就用/etc/localtime和/usr/share/zoneinfo下的时区文件进行匹配,如找到匹配的,就返回对应的路径和文件名。
问题在于,如果使用cp命令来修改/etc/localtime文件,那么可能就会导致修改的不是/etc/localtime文件,而是原时区的文件内容。
/etc/localtime是通过符号链接链接/usr/share/zoneinfo下的文件,而java是通过文件名来确认时区的,data命令是通过文件内容确认时区的,这样就导致了data命令时区正确,而java的时区是错误的!
如上图所示:CentOS7是通过符号链接到/usr/share/zoneinfo/下的时区文件的,如果通过cp指令只会修改原时区文件内容,这样,通过date的系统命令,查看时间是OK的,可是java是通过读取文件名的方式确认时区信息的。所以时区还是纽约。
CentOS 7系统中的时间日期设置全攻略
在过去的CentOS版本里,要设置时区的话要手动修改/etc/locale.conf文件,很是麻烦,不过CentOS 7已经为我们准备好一个非常强大的工具了: localectl
显示当前时区
使用以下命令:
复制代码
代码如下:
~]$ localectl status
System Locale: LANG=en_US.UTF-8
VC Keymap: us
X11 Layout: n/a
可以看到,除了显示了系统的时区信息以外,还显示了键盘信息和X11布局信息
列出所有的时区
用以下命令显示所有的英文时区
复制代码
代码如下:
~]$ localectl list-locales| grep en_
en_AG
en_AG.utf8
en_AU
en_AU.iso88591
en_AU.utf8
en_BW
en_BW.iso88591
en_BW.utf8
如果要显示中文的,只需要把grep en改成grep zh就行了
设置本地时区
使用Root执行以下命令:
复制代码
代码如下:
localectl set-locale LANG=locale
把最后的 locale替换成具体的时区,比如zh_CN.UTF-8就可以设置了。
是不是很强大啊。
timedatectl
下面隆重来介绍一下timedatectl命令~
在以前的CentOS版本里,时间设置有 date, hwclock等一系列命令,但是CentOS 7开始,使用了一个统一的命令:
复制代码
代码如下:
timedatectl
这个命令非常的强大,首先是直接使用可以显示当前的系统时间的一些信息:
复制代码
代码如下:
~]$ timedatectl
Local time: Mon 2013-09-16 19:30:24 CEST
Universal time: Mon 2013-09-16 17:30:24 UTC
Timezone: Europe/Prague(CEST,+0200)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
Sun 2013-03-31 01:59:59 CET
Sun 2013-03-31 03:00:00 CEST
Next DST change: DST ends(the clock jumps one hour backwards) at
Sun 2013-10-27 02:59:59 CEST
Sun 2013-10-27 02:00:00 CET
设置当前日期:
使用Root执行以下命令就可以了:
复制代码
代码如下:
timedatectl set-time YYYY-MM-DD
设置当前时间:
依旧是要Root权限
复制代码
代码如下:
timedatectl set-time HH:MM:SS
默认的,系统是使用UTC时间的,可以用以下命令打开和关闭UTC时间:
复制代码
代码如下:
timedatectl set-local-rtc boolean
把 boolean替换成yes则表示使用本地时间,替换成no则表示是UTC时间
设置任意时区
可以用以下命令查看所有的时区:
复制代码
代码如下:
timedatectl list-timezones
然后用以下命令设置时区:
复制代码
代码如下:
timedatectl set-timezone time_zone
当然root权限是免不了的
与远程NTP服务器同步
timedatectl还可以设置是否打开NTP选项
复制代码
代码如下:
timedatectl set-ntp boolean
同样的,这里的boolean是yes或者no