Ubutun时间同步

背景

最近在做一个测试,测试时从serviceA向serviceB发送请求,在发送请求的时候有鉴权,鉴权的参数包含时间戳。在调用过程中发现serviceA的时间和serviceB的时间相差了16个小时,立即想到了应该是时钟不同步的问题。因此需要调整serviceA所在的服务器的时钟,就有了这篇文章。

时钟同步

首先在ubuntu系统中,时间校准通常是通过NTP(Network Time Protocol)来进行的。一般在Ubuntu安装的时候会默认安装systemd-timesyncd服务来对时间进行管理的。

  1. 首先检查systemd-timesyncd服务状态。
shell 复制代码
sudo systemctl status systemd-timesyncd.service

服务状态正常。

  1. 执行date命令查看系统时间,发现时间仍然不对。怀疑是不是系统的时区设置的不对。设置系统市区为东八区。
shell 复制代码
timedatectl list-timezones|grep Shan

列出系统支持的时区。结果中包含Shanghai

shell 复制代码
timedatectl set-timezone Asia/Shangha

查看执行结果:

shell 复制代码
timedatactl status
  1. 再次执行date命令发现时间仍没有发生变化。考虑手动指定时间,但是手动设置时间存在时间被NTP覆盖的问题,不利于后续时间的维护。放弃该方法。
  2. 再次查看systemd-timesyncd状态。

此时的status状态为'idle',idle状态表示systemd-timesyncd服务正在等待进行时间同步,或者在尝试同步后进入了空闲状态。这个状态不一定表示有问题,因此需要继续检查systemd-timesyncd的日志。执行如下命令: shell journalctl -u systemd-timesyncd 结果如下所示:

可以看到ntp服务一直在同步时间,但是无法得到响应,猜测应该是网络的问题。至于修复方式也很简单,修改ntp服务配置,使其能够访问国内的ntp服务器。

  1. 打开/etc/systemd/timesyncd.conf文件,添加以下内容
ini 复制代码
[Time]
NTP=ntp.aliyun.com
  1. 重启systemd-timesyncd服务。

    sudo systemctl restart systemd-timesyncd

  2. 再次检查时间,结果符合预期。

小结

NTP虽然是一个很小的知识点,但是问题的排查过程涉及到Ubuntu后台进程的管理,目前Centos和Ubuntu主流的linux发行版都采用systemd座位后台进行管理工具,因此掌握systemd对于Linux的运维和管理非常重要,后面单开一篇文章来介绍systemd。

相关推荐
The Chosen One9854 分钟前
【Linux】深入理解Linux进程(二):进程的状态
linux·运维·服务器·开发语言·git
草莓熊Lotso8 分钟前
Linux Socket 编程筑基:从底层本质到核心 API,一文吃透 Socket 预备知识
linux·运维·服务器·数据库·c++
say_fall20 分钟前
装软件慢到崩溃?用户创建总出错?Linux 工具避坑指南
linux·运维·服务器·c++·学习
小则又沐风a32 分钟前
基础的开发工具(2)---Linux
java·linux·前端
一个学Java小白33 分钟前
LV.12 Linux应用开发综合实战-在线词典
linux·运维·服务器
代码中介商1 小时前
Linux TCP 协议深度解析:从状态机到拥塞控制
linux·网络·tcp/ip
林熙蕾LXL1 小时前
系统调用&文件描述
linux·运维·服务器
落羽的落羽1 小时前
【网络】TCP与UDP协议使用指南,Socket编程实现Echo服务
linux·服务器·网络·c++·网络协议·tcp/ip·机器学习
草莓熊Lotso2 小时前
LangChain从入门到精通:环境搭建→核心能力→LCEL链式编程全实战
android·java·linux·服务器·langchain
GanGanGanGan_10 小时前
RustDesk 安装指南 — Rocky Linux 9 + XFCE X11
linux·运维·centos