当前位置: 首页 > article >正文

服务器时间不同步

问题

每次设置完时间之后,过一段时间服务器的时间就会变慢。

date相关命令

date		# 查询当前时间(日期及时间,格式为:周几 月 日 时:分:秒 时区 年)
Tue Dec 24 11:53:14 CST 2024

date +"%Y-%m-%d %H:%M:%S"		# 使用+和格式字符串,可自定义时间的显示格式(格式为“YYYY-MM-DD HH:MM:SS”)
2024-12-24 13:33:50
date +"%Y-%m-%d"							# 显示当前年月日
2024-12-24
date +%s										# 显示当前时间的Unix时间戳
1735018939

date -r somefile.txt			# 显示文件的最后修改时间

sudo date -s "2024-12-24 13:40:00"		# 设置系统时间为指定日期和时间
Tue Dec 24 13:40:00 CST 2024

date -d "7 days"   # 显示7天后的日期和时间
date -d "2 days ago" # 显示2天前的日期和时间

原因分析并解决

  1. 时区设置不正确:
    如果服务器的时区设置不正确,那么显示的时间就会与实际时间有偏差。
    对比系统显示的时区与实际所在的时区是否一致,测试步骤如下:
    • 在Linux系统中,使用timedatectl status命令查看当前的时区设置。
      timedatectl status					# 查看当前的时区设置
           Local time: Tue 2024-12-24 13:53:20 CST
       Universal time: Tue 2024-12-24 05:53:20 UTC
             RTC time: Tue 2024-12-24 13:53:24
            Time zone: Asia/Shanghai (CST, +0800)
          NTP enabled: no
      NTP synchronized: no
      RTC in local TZ: no
           DST active: n/a
           
           # 修改当前服务器时区
           sudo timedatectl set-timezone UTC	# 设置当前时区为UTC
      
    • 在Windows系统中,通过控制面板的“日期和时间”选项查看时区设置。
  2. 网络时间协议(NTP)未启用或配置错误:
    NTP是一种网络协议,用于同步计算机之间的时间。如果服务器未启用NTP或NTP配置不正确,时间就无法同步。
    • 在服务器上检查NTP服务是否正在运行,可以使用sudo ps aux | grep -E "ntpd|chronyd"(Linux)或w32tm /query /status(Windows)命令。
      # 在Linux系统中查找正在运行的NTP(Network Time Protocol,网络时间协议)服务或chrony服务。NTP和chrony都是用于同步计算机时钟的服务
      # "ntpd|chronyd" 是要搜索的模式,| 表示“或”的关系。这意味着grep会搜索包含“ntpd”(NTP守护进程)或“chronyd”(chrony服务的守护进程)的行
      sudo ps aux | grep -E "ntpd|chronyd"
      root      1050  0.0  0.0 112812   988 pts/0    S+   11:23   0:00 grep --color=auto -E ntpd|chronyd
      # 表示以上未启动ntpd或chronyd,ntpd和chronyd都是服务器上的时间同步服务,它们的作用在于确保计算机的系统时间与网络中的其他设备或时间服务器保持一致,从而避免因时间不同步而可能导致的各种问题
      
      # 解决方式如下
      sudo systemctl restart chronyd.service			# 重启chronyd服务
      sudo systemctl enable chronyd.service			# 启用chronyd服务,使其在系统启动时自动启动
      sudo chronyc tracking							# 查询chronyd的时间同步状态
      
    • 查看NTP配置文件(如/etc/ntp.conf),确认服务器列表和同步策略是否正确。
    • 使用ping命令测试与NTP服务器的网络连接是否稳定。
    • 检查防火墙设置,确保NTP通信(默认端口123)未被阻止。
  3. 硬件故障:
    服务器的硬件时钟(RTC)可能出现故障,导致时间不准确。
    • 使用hwclock(Linux)或BIOS/UEFI界面(Windows)检查硬件时钟的时间。
    • 对比硬件时钟与系统时钟的时间是否一致。
    • 尝试将系统时间写入硬件时钟(Linux:sudo hwclock --systohc --utc),然后再次检查是否一致。
  4. 操作系统或时间同步服务问题:
    操作系统的时间同步服务可能出现故障或未正确配置,导致时间无法同步。
    • 检查操作系统的系统日志,查找与时间同步相关的错误或警告信息。
    • 尝试重启时间同步服务(Linux:sudo systemctl restart ntp或sudo systemctl restart chronyd,Windows:在服务管理器中重启“Windows 时间”服务)。
    • 使用ntpstat(Linux)或w32tm /testpeer(Windows)命令检查时间同步状态。
  5. 防火墙或安全策略阻止时间同步:
    有时防火墙或安全策略可能会阻止服务器与外部时间源进行通信,从而导致时间不同步。
    • 检查防火墙规则,确保NTP通信(默认端口123)的入站和出站规则都已正确配置。
    • 使用网络监控工具检查是否有NTP通信被阻止的日志记录。

http://www.kler.cn/a/457147.html

相关文章:

  • Ubuntu 22.04 升级 24.04 问题记录
  • 深入理解 Vue 3 中的具名插槽
  • 《代码随想录》Day21打卡!
  • 网站目录扫描工具(dirb常用命令)
  • IDEA+Docker一键部署项目SpringBoot项目
  • Excel文件恢复教程:快速找回丢失数据!
  • Redis到底支不支持事务啊?
  • Docker安装GPUStack详细教程
  • 知识碎片-环境配置
  • 设计模式通俗解释
  • 基于springboot校园招聘系统源码和论文
  • c++---------------------------string
  • 深入解析JVM中对象的创建过程
  • 用 Python 从零开始创建神经网络(十八):模型对象(Model Object)
  • 隨筆20241226 ExcdlJs 將數據寫入excel
  • C# winform 报错:类型“System.Int32”的对象无法转换为类型“System.Int16”。
  • WPF编程excel表格操作
  • PDB数据库解析:
  • C 语言中 strlen 函数的深入剖析
  • leetcdoe 1670.设计前中后队列
  • opencv与pyqt6结合例子
  • 用VBA自动更正错误的注释引用序号
  • python圣诞节简单寻宝小游戏
  • Unity功能模块一对话系统(2)打字机淡入效果
  • 喜报 | 擎创科技入围上海市优秀信创解决方案
  • Rancher V2.9.0 Docker安装教程