时区 Time Zone

普及一点地理知识

执行date命令打印当前时间,结果中的CST就表示当前系统设置的时区

[root@taotaoplus ~]# date
2022年 08月 12日 星期五 00:18:38 CST
[root@taotaoplus ~]#

UTC:协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。 中国大陆、中国香港、中国澳门、中国台湾、蒙古国、新加坡、马来西亚、菲律宾、西澳大利亚州的时间与UTC的时差均为+8,也就是UTC+8。
CST:同时代表了下面4个时区:美国中部时间:Central Standard Time (USA) UT-6:00、澳大利亚中部时间:Central Standard Time (Australia) UT+9:30、中国标准时间:China Standard Time UT+8:00、古巴标准时间:Cuba Standard Time UT-4:00

这里的CST(Chinese Standard Time)指的是中国标准时间,就是通常所说的北京时间
举个例子
中国的晚上八点就可以表示为:20:00 CST
中国处在东八区(UTC+8),通过计算也可以表示为:12:00 UTC

时区对于linux时间同步的意义在于:我们从一个服务器同步时间时,服务器只会给我们给出UTC+0的时间值,因为它不知道我们在哪里

Linux Time Zone

在Linux下glibc提供了很多事先编译好的时区文件, 放在/usr/share/zoneinfo目录下

[root@taotaoplus zoneinfo]# ls -F /usr/share/zoneinfo/
Africa/      Asia/       Canada/  Cuba   EST      GB       GMT-0      HST      iso3166.tab  Kwajalein    Mexico/  NZ        Portugal    PST8PDT  Singapore  Universal  W-SU
America/     Atlantic/   CET      EET    EST5EDT  GB-Eire  GMT+0      Iceland  Israel       leapseconds  MST      NZ-CHAT   posix/      right/   Turkey     US/        zone1970.tab
Antarctica/  Australia/  Chile/   Egypt  Etc/     GMT      Greenwich  Indian/  Jamaica      Libya        MST7MDT  Pacific/  posixrules  ROC      tzdata.zi  UTC        zone.tab
Arctic/      Brazil/     CST6CDT  Eire   Europe/  GMT0     Hongkong   Iran     Japan        MET          Navajo   Poland    PRC         ROK      UCT        WET        Zulu

zdump 命令可以查看每个时区(地区)的当前时间

[root@taotaoplus ~]# zdump  /usr/share/zoneinfo/UTC
/usr/share/zoneinfo/UTC  Thu Aug 11 17:01:16 2022 UTC
[root@taotaoplus ~]# zdump  /usr/share/zoneinfo/Hongkong
/usr/share/zoneinfo/Hongkong  Fri Aug 12 01:01:26 2022 HKT
[root@taotaoplus ~]# zdump  /usr/share/zoneinfo/Asia/Shanghai
/usr/share/zoneinfo/Asia/Shanghai  Fri Aug 12 01:01:37 2022 CST
[root@taotaoplus ~]# zdump  /usr/share/zoneinfo/Japan
/usr/share/zoneinfo/Japan  Fri Aug 12 02:01:54 2022 JST
[root@taotaoplus ~]# date
2022年 08月 12日 星期五 01:03:26 CST

date命令查看的则是当前系统设置的时区的时间,那么怎么设置当前的时间呢?

修改时区

方案一(最常用的方法)修改/etc/localtime这个文件,

这个文件定义了我们所在的时区,这是个软连接,我们可以重新创建软连接指向/usr/share/zoneinfo中定义的时区文件
举个栗子:时区修改为新加坡,再修改为上海:

oot@taotaoplus ~]# ll /etc/localtime
lrwxrwxrwx. 1 root root 35 2月  17 21:40 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
[root@taotaoplus ~]# ln -sf /usr/share/zoneinfo/Singapore /etc/localtime
[root@taotaoplus ~]# ll /etc/localtime
lrwxrwxrwx. 1 root root 29 8月  12 01:16 /etc/localtime -> /usr/share/zoneinfo/Singapore
[root@taotaoplus ~]# date
2022年 08月 12日 星期五 01:17:06 +08
[root@taotaoplus ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@taotaoplus ~]# ll /etc/localtime
lrwxrwxrwx. 1 root root 33 8月  12 01:17 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai
[root@taotaoplus ~]# date
2022年 08月 12日 星期五 01:17:30 CST
[root@taotaoplus ~]#

方案二 tzselect

当前时区

执行tzselect,进行交互式选择


简单总结:(理解这些需要知道Linux环境变量相关的知识哦Q_Q

  • 直白点说tzselect命令只是生成信息,创建TZ环境变量才会使时区配置生效
  • TZ环境变量的时区配置会覆盖 /etc/localtime.也就是说TZ变量没有定义的时候系统才使用/etc/localtime来确定时区
  • 根据export命令的特性重启TZ环境就没了,所以你想永久修改时区的话就把TZ变量的设置直接写入/etc/profile里

方案三 timedatectl

时间

明确概念

在一台计算机上我们有两个时钟,硬件时间时钟(Real Time Clock,RTC)和系统时钟(System Clock)

硬件时钟是指嵌在主板上的特殊的电路, 它的存在就是平时我们关机之后还可以计算时间的原因
系统时钟就是操作系统的kernel所用来计算时间的时钟. 它从1970年1月1日00:00:00 UTC时间到目前为止秒数总和的值 在Linux下系统时间在开机的时候会和硬件时间同步(synchronization),之后也就各自独立运行了

那么既然两个时钟独自运行,那么时间久了必然就会产生误差

同步误差

# 硬件时间设置成系统时间
hwclock --hctosys
# 系统时间设置成硬件时间
hwclock --systohc
# 那么如果想设置硬件时间我们可以开机的时候在BIOS里设定.也可以用hwclock命令
hwclock --set --date="mm/dd/yy hh:mm:ss"

系统时间

通常我们用date命令操作系统时间

# 修改系统时间
date -s "dd/mm/yyyy hh:mm:ss"

NTP和时间的同步

网络时间协议,英文名称:Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。NTP的目的是在无序的Internet环境中提供精确和健壮的时间服务。

我们的计算机时间久了都会产生误差
NTP Server的时间是准确的
那就让时间服务器给我们的定时同步时间吧

找到给我们提供同步服务的NTP Server:
NTP的官方网站
阿里云NTP服务器

两种时间同步工具ntpd、ntpdate

ntpd平滑同步、ntpdate立即同步,在生产环境中慎用ntpdate,也正如此两者不可同时运行
时钟的跃变,对于某些程序会导致很严重的问题。

ntpdate (不推荐使用)

ntp服务开启时,ntpdate 会报错,冲突!!!

# 安装 ntpdate
yum install ntpdate -y
# 同步时间
ntpdate cn.pool.ntp.org
# 配合定时crontab定时我任务,定时同步时间
echo "0 12 * * * /usr/sbin/ntpdate cn.pool.ntp.org" >> /var/spool/cron/root [root@taotaoplus ~]# crontab -l
0 12 * * * /usr/sbin/ntpdate cn.pool.ntp.org

ntp服务

概述

NTP(Network Time Protocol,网络时间协议)
C/S模式
NTP是层级结构,有顶端的服务器,多层的Relay Server再到客户端。所以服务器从高到低,级别可以设定为1~16级。为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器。

安装:

yum -y install ntp

服务命令

systemctl enable ntpd 开机启动
systemctl start ntpd 启动服务
systemctl stop ntpd 停止服务
systemctl status ntpd 查看服务状态

服务端口


服务启动后的端口监听

配置文件:/etc/ntp.conf

  1. server
    配置的多个ntp服务器
    本机从哪里同步时间?上游时间服务器
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# 配置为阿里的时间服务器
server 120.25.115.20        # ntp1.aliyun.com
server 203.107.6.88         # ntp2.aliyun.com
  1. restrict
    谁可以访问?谁可以修改我的时间?
    上级时间服务器能访问我,并且能修改我的时间
    当我作为局域网内的时间服务器,需要给局域网内的其他机器同步时间,此时就要设置这个网段的机器能访问我,但不能修改我的时间
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
# 默认是拒绝所有来源的任何访问
restrict default nomodify notrap nopeer noquery# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 120.25.115.20      # ntp1.aliyun.com 允许上级时间服务器访问,并修改我的时间
restrict 203.107.6.88       # ntp2.aliyun.com 允许上级时间服务器修改,并修改我的时间
restrict 127.0.0.1          # 自己可以访问自己(ipv4)
restrict ::1                # 自己可以访问自己(ipv6)
restrict  192.168.65.0 mask 255.255.255.0 nomodify # 允许局域网机器访问,但不能修改我的时间

其他参数暂时不关注了 以后用到再说

检查同步结果

配置完重启服务:systemctl restart ntpd
执行ntpstat,检查是否与上有服务器链接时间是否自动同步(每64s 同步一次)
PS:ntpstat需要ntp服务重启后几分钟执行

执行 ntpq -p,查看和上游时间服务器的连接状态
列出了所有作为时钟源校正过本地NTP服务器时钟上层NTP服务器的列表。

  • remote:响应这个请求的NTP服务器的名称。*表示当前选择的主服务器,+表示辅助服务器,-表示不合格的服务器,x表示服务器不可用。
  • refid:NTP服务器使用的上一级ntp服务器的IP地址
  • st:远程NTP服务器的级别。
  • t:本地NTP服务器与远程NTP服务器的通信方式。u:单播;b:广播;I:本地
  • when:上次成功请求后到现在的秒数
  • poll:本地NTP服务器与远程NTP服务器同步的时间间隔。
  • reach:这是一个八进制的值,用来测试衡量前八次查询是否成功和服务器连接。377表示都成功,0表示不成功
  • delay:网络延时,单位为微秒(μs)
  • offset:本地NTP服务器与远程NTP服务器的时间偏移,单位为毫秒(ms)。offset越接近于0,主机与NTP服务器的时间越接近
  • jitter:查询偏差的分布值,用于表示远程NTP的网络延时是否稳定,单位为微秒(μs)。

linux时间设置与同步--NTP相关推荐

  1. 服务器时间设置及同步

    转自:服务器时间设置及同步 - 知乎 设置服务器时间有两种方法:1.手动设置.2.同步网络,我们通常使用的是第二种,因为手动设置的难免有误差,但如果有特殊需求,我们会采取第一种方式. 无论哪种方式,首 ...

  2. linux怎么和宿主机同步时间,Linux 中设置和同步时间

    准确的系统时间是稳定服务的基础,本文介绍与时间相关的Linux命令,以及如何为自己的Linux服务器维护准确的时间. 时间 一台Linux服务器有两个时间源,一个是硬件时间,即服务器硬件CMOS维护的 ...

  3. linux设置ntp后不生效,Linux时间设置与NTP服务配置

    第一部分:时间设置 一.时间和时区 格林威治时间(GMT),是0时区时间.计算机中是UTC.它是Coordinated Universal Time的简写.虽然UTC和GMT的值相等(误差相当之小), ...

  4. windows2012同步linux时间,Windows server2012时间同步NTP配置

    遇到经常服务器时间无法同步,可以自己建立一台时间同步服务器,NTP配置如下: 一.服务端配置 (Ntp服务器,客户端将根据这台服务器的时间进行同步) 1.微软键+R键,进入"运行" ...

  5. linux锁定系统时间设置,Linux时间设置系统时间、硬件时间和时间服务

    Linux有两个时间,一个是系统时间,一个是RTC时间(也叫硬件时间). Linux系统启动时,会自动获取硬件时间,设置为系统时间. 一.查询系统时间: 查询系统时间:date 查询/设置硬件时间: ...

  6. Linux 时间校准与同步

    Linux时钟分为: 系统时钟(System Clock)和 硬件时钟(Real Time Clock,简称RTC) Linux下,默认情况下,系统时间和硬件时间并不会自动同步.系统运行过程中,系统时 ...

  7. linux配置文件引用时间,linux时间设置、screen使用、命令分类、hash作用、命令引用及history命令...

    一. 生产环境发现一台服务器系统时间产生偏差,造成服务异常 解决方法 a. 如果服务器硬件时间准备的话,可使用命令:~#] hwclock -s 将硬件时钟同步到系统 b.date [MMDDhhmm ...

  8. linux最大时间,Linux 时间设置

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 时区UTC (Coordinated Universal Time) 协调世界时,是个标准时间. GMT (Greenw ...

  9. linux 时间修改 及 同步

    date 月日时分年.秒 date -s可以直接设置系统时间 比如将系统时间设定成1996年6月10日的命令如下. #date -s 06/10/96 将系统时间设定成下午1点12分0秒的命令如下. ...

  10. Linux时间设置和motd设置

    date 系统时间 clock 硬件时间 timedatectl status 当前时区设置 timedatectl list-timezones 查看时区列表 timedatectl set-tim ...

最新文章

  1. 使用Python自己实现简单的数据可视化
  2. STM32F4 HAL库开发 -- DMA
  3. [Jmeter]通过批处理调用java,java从CSV动态读取登录的用户名和密码,并将其作为参数组合成字符串,写入外部.bat文件,然后通过Java执行这个外部批处理文件...
  4. 一天学完spark的Scala基础语法教程十、类和对象(idea版本)
  5. 以DES的方式实现对称加密,并提供密钥
  6. 基于Node.js + WebSocket 的简易聊天室
  7. 剑指Offer之翻转单词顺序列
  8. 微软下周将发布重磅安全公告 修复40个漏洞
  9. 到底他怎么赚钱了啊?看来看去也看不出他赚钱了,看来经济头脑有限啊
  10. Word怎么转换成PDF?
  11. 【IPM2020】一种处理多标签文本分类的新颖推理机制
  12. 「leetcode」225. 用队列实现栈/Implement Stack using Queues
  13. Spring Boot 2.x 集成 SLF4j + log4j2 日志框架
  14. [4G5G专题-81]:流程 - 4G LTE 小区切换流程大全
  15. Mac上青花瓷抓包安装
  16. python Django项目汇总(毕设、课设、学习)
  17. CentOS安装虚拟打印机
  18. 知识库管理-运维管理
  19. 海马玩模拟器——搭建React Native环境
  20. 马哥教育SRE笔记【作业】week02

热门文章

  1. 关于复制粘贴快捷键失效问题的解决方法
  2. 北京工业大学 计算机学院分数线,2019年北京工业大学计算机专业录取分数线
  3. DeepMD安装及Unbuntu下Nvidia显卡升级(防跳坑)
  4. 用HTML/JScript/CSS做一个简单的登录界面
  5. [NOIP2013 提高组] 火柴排队
  6. Android 进阶之路《丢掉初学者的诟病》
  7. oracle 启用job,Oracle job启动与关闭
  8. MySQL - MySQL 8.0(二)基本操作:对象
  9. Flutter3.0导入english_words报错flutter\packages\flutter_tools\gradle\flutter.gradle‘ 行: 1156
  10. matlab制作扇形统计图及颜色调配