Orange的运维学习日记--16.Linux时间管理

Orange的运维学习日记–16. Linux时间管理

文章目录

  • Orange的运维学习日记--16. Linux时间管理
    • 系统与硬件时钟
      • 时钟类型对比
      • 查看内核支持的时钟源
    • 本地时间调整
      • 使用 `date` 查看与设置
      • 一次性同步:`ntpdate`
      • 同步到硬件时钟:`hwclock`
    • 基于 systemd 的 `timedatectl`
    • 交互式选择时区:`tzselect`
    • NTP 服务对比
    • 自动对时配置
      • Windows 平台对时
      • macOS 平台对时
    • Linux 上的 `chronyd` 服务
    • 时间服务器部署
      • 部署拓扑示例(ASCII 图示)
      • 服务端配置
      • 客户端配置
    • 常见故障排查
    • 时间监控与报警

系统与硬件时钟

系统时间由 Linux 内核维护,常见时钟源(clocksource)包括 TSC、HPET、ACPI PM Timer 等。
硬件时钟(RTC)通过主板电池供电,系统关机后依然运行,用于引导时提供初始时间。

时钟类型对比

时钟名称作用是否可调用途
CLOCK_REALTIME墙钟时间,可被用户/管理员修改可调节date、文件系统时间戳、网络协议
CLOCK_MONOTONIC单调递增时间,不受系统时钟修改影响不可调节性能分析、测量时间间隔
CLOCK_BOOTTIME含睡眠时间的单调时钟不可调节包括挂起/休眠时间的精准事件计时

查看内核支持的时钟源

cat /sys/devices/system/clocksource/clocksource0/available_clocksource
cat /sys/devices/system/clocksource/clocksource0/current_clocksource

本地时间调整

使用 date 查看与设置

# 查看人类可读格式(英文环境避免本地化乱码)
LANG=en_US.UTF-8 date# 查看 Epoch 秒
date +%s# 设置系统时间
date -s '2022-11-11 11:30:59'

提示:date 的字符串解析对本地化依赖较大,推荐使用 YYYY-MM-DD hh:mm:ss 这种标准格式。

一次性同步:ntpdate

# 安装(以 Debian/Ubuntu 为例)
apt-get install ntpdate# 立即与公有 NTP 服务器同步
ntpdate -u time.google.com

同步到硬件时钟:hwclock

# 读取 RTC 时间
hwclock -r# 将系统时间写入 RTC(持久)
hwclock -w# 将 RTC 时间写入系统
hwclock -s
  • hwclock -w 建议在人工设置完系统时间后执行,确保下次启动也能读取到准确时间。

基于 systemd 的 timedatectl

# 显示本地时间、UTC、RTC、NTP 状态及时区
timedatectl# 关闭/开启 NTP 自动对时
timedatectl set-ntp no
timedatectl set-ntp yes# 手动设置系统时间
timedatectl set-time '2022-11-10 11:42:54'# 设置或切换时区
timedatectl set-timezone Asia/Shanghai

提示:如果 NTP 自动对时开启,手动设置时间会被立即覆盖。


交互式选择时区:tzselect

tzselect

按提示选择大区、国家和城市,得到类似 Asia/Urumqi 的 TZ 值。
可将该值赋给环境变量:

echo 'export TZ=Asia/Urumqi' >> ~/.profile
source ~/.profile

NTP 服务对比

特性ntpdchronydsystemd-timesyncd
资源占用较高适中最低
适应网络抖动较差较好较差
虚拟化/移动设备支持较弱支持良好支持有限
功能丰富度丰富丰富基本

选择时可根据业务需求、环境网络质量及资源消耗进行权衡。


自动对时配置

Windows 平台对时

  1. 打开“控制面板 → 日期和时间”
  2. 切换到“Internet 时间”选项卡
  3. 勾选“与 Internet 时间服务器同步”,填写常用 NTP 地址(如 time.windows.com
  4. 点击“立即更新”并应用

在这里插入图片描述

macOS 平台对时

  1. 打开“系统设置 → 日期与时间”
  2. 勾选“自动设置日期和时间”
  3. 选择或添加喜欢的 Apple NTP 服务器

Linux 上的 chronyd 服务

  1. 安装 chrony(以 Red Hat 系发行版为例)

    yum install chrony
    
  2. 编辑

    /etc/chrony.conf
    

    ,添加或调整对时服务器

    server ntp.aliyun.com iburst
    pool 2.rocky.pool.ntp.org iburst
    
  3. 启用并启动服务

    systemctl enable --now chronyd
    
  4. 查看对时源状态

    chronyc sources -v
    chronyc tracking
    

输出示例:

^* 203.107.6.88   2   6    77     9  -1.84ms ±  23ms
  • 前缀含义:^* 最佳源;Reach、Offset、StdDev 用于评估稳定性。

时间服务器部署

部署拓扑示例(ASCII 图示)

Internet NTP Pool↓┌───┴────┐│  Chrony │  局域网时间服务器(10.1.8.10)└───┬────┘↓
┌──────┴───────┐
│  客户端群组   │  (10.1.8.0/24)
└──────────────┘

服务端配置

vim /etc/chrony.conf# 监听本地接口
bindaddress 10.1.8.10# 开放子网范围
allow 10.1.8.0/24systemctl restart chronyd

客户端配置

vim /etc/chrony.conf# 指向局域网内部时间服务器
server 10.1.8.10 iburstsystemctl restart chronyd

配置防火墙,确保 UDP/123 端口双向连通。


常见故障排查

  • chrony 无法同步
    • 检查时间服务器地址是否正确
    • 查看 journalctl -u chronyd 日志
    • 确认防火墙、SELinux 策略放行 UDP/123
  • 系统时间持续漂移
    • 查看硬件时钟电池电量及 /etc/adjtime 是否存在写入错误
    • 使用 chronyc tracking 查看 Root Delay、Root Dispersion 是否超阈值
  • 时区切换后时间不生效
    • 确认 /etc/localtime 已链接到正确的 zoneinfo 文件
    • 重启相关服务或重新登录

时间监控与报警

  • ntpstat:快速报告同步状态
  • chronyc sourcestats:统计每个源的历史偏差
  • 将关键指标(Offset、Drift)接入 Prometheus + Grafana,设置阈值报警
  • 定期对硬件时钟和系统时间做交叉检查,钉住 drift 趋势

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91094.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91094.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git 与 GitHub 的对比与使用指南

Git 与 GitHub 的对比与使用指南 在软件开发中,Git 和 GitHub 是两个密切相关但本质不同的工具。下面我将逐步解释它们的定义、区别、核心概念以及如何协同使用,确保内容真实可靠,基于广泛的技术实践。 1. 什么是 Git? Git 是一个…

20250726-4-Kubernetes 网络-Service DNS名称解析_笔记

一、Service DNS名称 1. 例题:通信需求 通信场景:项目A中的Pod需要与项目B中的Pod进行通信,直接使用Pod IP不可行,因为Pod IP会随着Pod生命周期变化。 解决方案:通过Service提供的稳定IP地址进行通信,不受Pod重建、扩容/缩容等操作影响。 2. CoreDNS介绍  基本功能…

vscode 登录ssh记住密码直接登录设置

第一种情况在系统已经生成密钥对的情况下:点击这里的设置第二步:第三步:没有填写的给填写一下第四步骤:保存后进入选择这个点开第五步:去Linux终端下输入这个命令就OK了echo "ssh-rsa内容" >> ~/.ssh/…

Nginx 动静分离配置(详细版)

本文介绍了Nginx 动静分离相关配置,主要包括了配置文件创建、配置示例、配置原理解析以及重新启用配置文件等等 本文目录1. 创建 Nginx 配置文件2. 配置示例3. 配置原理解析4. 启用配置文件并重新加载 Nginx1. 创建 Nginx 配置文件 在 /etc/nginx/sites-available …

C# CAN通信上位机系统设计与实现

C# CAN通信上位机系统设计与实现 C# CAN通信上位机程序,支持多种CAN适配器,提供数据收发、协议解析、数据可视化等功能。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; usi…

Ubuntu20.04子系统

常用 # 导出分发版到 E盘 wsl --export Ubuntu-20.04 E:\wsl-ubuntu20.04.tar # 注销原有分发版 wsl --unregister Ubuntu-20.04 # 导入到 E盘的新路径(例如 E:\WSL\Ubuntu-20.04) wsl --import Ubuntu-20.04 E:\WSL\Ubuntu-20.04 E:\wsl-ubuntu20.04.t…

【设计模式】状态模式 (状态对象(Objects for States))

状态模式(State Pattern)详解一、状态模式简介 状态模式(State Pattern) 是一种 行为型设计模式(对象行为型模式),它允许一个对象在其内部状态改变时改变其行为。换句话说,对象看起来好像修改了它的类。 你…

工业前端组件库重构心法:如何让开发效率提升60%的交互模块设计逻辑

工业前端组件库重构心法:如何让开发效率提升60%的交互模块设计逻辑内容摘要在工业项目开发中,前端组件库是提升开发效率的关键。然而,许多团队的组件库存在设计不合理、维护困难等问题,导致开发效率低下。如果能够重构组件库&…

leetcode 74. 搜索二维矩阵

二分查找经典题目;根据矩阵的特点,不需要把矩阵拉成一维,二维转成一维映射关系为a[i]matrix[⌊i//n⌋][i%n];然后开始二分查找,一直二分的收缩区间;class Solution:def searchMatrix(self, matrix: List[Li…

26考研英语词汇的逻辑笔记(Unit31-43)

行为UNIT 31词汇数量:274 词群数量:16 词群逻辑:行为举止 | 行为标准与原则 给予、收回 | 接受、允许、让步、拒绝 促进、鼓励 | 支持、帮助、资助 破坏相关 | 错误、改正 阻碍、打扰相关 | 禁止、阻止、限制 值得、有利、不利相关 | 有意、故…

Lua(数据库访问)

Lua 数据库访问方法Lua 本身不提供内置的数据库访问功能,但可以通过第三方库实现与多种数据库的交互。以下是常见的 Lua 数据库访问方法:使用 LuaSQL 库LuaSQL 是一个轻量级数据库访问库,支持多种数据库后端(MySQL、PostgreSQL、S…

在 Dell PowerEdge T440 上通过 iDRAC9 安装 Proxmox VE

在 Dell PowerEdge T440 上通过 iDRAC9 安装 Proxmox VE 文章目录 在 Dell PowerEdge T440 上通过 iDRAC9 安装 Proxmox VE 1. 前置要求 1.1. 硬件信息(例) 1.2. 准备工作 2. 安装步骤 2.1. 登录 iDRAC9 2.2. 启动虚拟控制台 2.3. 挂载 Proxmox VE ISO 2.4. 设置服务器从虚拟…

window下MySQL安装(三)卸载mysql

window下MySQL安装&#xff08;三&#xff09;卸载mysql 卸载mysql数据库&#xff0c;停止服务&#xff0c;备份文件&#xff0c;删除mysql文件。结束。 停止mysql服务 以管理员身份打开命令提示符或 PowerShell&#xff1a; net stop <服务名称> 示例&#xff1a;net st…

Elasticsearch 深度分页问题与 `search_after` 解决方案

1. 引言 主题&#xff1a;介绍 Elasticsearch 深度分页问题的背景&#xff0c;强调其在处理大规模数据集时的性能瓶颈。核心问题&#xff1a;传统 from/size 分页方式在深层分页&#xff08;例如第500页&#xff09;时&#xff0c;因需要加载和丢弃大量文档&#xff0c;导致内存…

Spring Boot 2整合MyBatis Plus详细指南

1. 环境准备Spring Boot版本&#xff1a;2.x&#xff08;推荐2.7.x&#xff09;MyBatis Plus版本&#xff1a;3.5.x&#xff08;兼容Spring Boot 2&#xff09;数据库&#xff1a;MySQL 8.0&#xff08;其他数据库需调整驱动&#xff09;2. 创建项目并添加依赖在pom.xml中添加核…

Docker镜像导入解析:docker import vs docker load

本文通过Busybox镜像的实战演示&#xff0c;深入剖析两个易混淆命令的技术原理与适用场景一、核心区别速览特性docker importdocker load输入来源容器文件系统快照(docker export输出)完整镜像归档(docker save输出)保留信息仅文件内容完整镜像(层/历史/配置/标签)生成镜像结构…

Android 解决键盘遮挡输入框

本文目录 点击直达Android 解决键盘遮挡输入框代码实现使用注意最后我还有一句话要说梧桐叶上三更雨&#xff0c;叶叶声声是别离。Android 解决键盘遮挡输入框 在安卓中通常可以通过添加android:windowSoftInputMode"adjustResize|stateHidden"的方式来让键盘顶起布…

热门JavaScript库“is“等软件包遭npm供应链攻击植入后门

轻量级 JavaScript 实用工具库 "is" 是 NPM 平台上的热门项目&#xff0c;每周下载量超过 220 万次。然而在 2025 年 7 月 19 日&#xff0c;该库开发者遭遇钓鱼攻击导致账户凭证泄露&#xff0c;攻击者借此发布了包含远程代码执行后门的恶意版本。钓鱼攻击入侵开发者…

如何实现缓存音频功能(App端详解)

本方案提供了符合平台规范的音频缓存实现&#xff0c;通过分层设计确保功能可靠性&#xff0c;同时预留扩展点支持未来优化需求。&#x1f4e6; 音频缓存与播放流程说明 项目目标 实现App端音频资源的自动缓存与播放&#xff1a; 获取远程音频URL下载文件至本地_downloads/目录…

从零到一:Django图书管理系统完整开发实战指南

作者&#xff1a;笙囧同学 身份&#xff1a;中科院计算机大模型方向硕士 | 全栈开发爱好者 座右铭&#xff1a;偷懒是人生进步的阶梯 联系方式&#xff1a;3251736703qq.com 可接课设&#xff0c;论文&#xff0c;专利辅导 全平台账号&#xff1a;笙囧同学 &#x1f4d6; 前言 …