主题
Linux日期和时区管理
课程介绍
接下来我们学习日期和时区管理。date命令可以查看和格式化显示当前日期时间,还能进行日期计算,比如明天的日期。时区用timedatectl命令设置,比如timedatectl set-timezone Asia/Shanghai设置为中国时区。Linux还可以用NTP服务自动同步时间,确保系统时间准确。
1. date命令:查看和格式化日期时间
命令概述
date命令是Linux系统中用于查看和设置系统日期和时间的命令行工具。
基本语法
bash
date [选项] [+格式化字符串]常用选项
| 选项 | 功能描述 |
|---|---|
-d | 按照给定的字符串显示日期(用于日期计算) |
-s | 设置系统日期和时间 |
-u | 显示或设置协调世界时(UTC) |
常用格式化字符串
| 格式化字符 | 功能描述 |
|---|---|
%Y | 四位数的年份(如2023) |
%y | 两位数的年份(如23,范围00-99) |
%m | 月份(01-12) |
%d | 日期(01-31) |
%H | 小时(00-23) |
%M | 分钟(00-59) |
%S | 秒(00-59) |
%s | 时间戳(从1970年1月1日00:00:00到现在的秒数) |
%A | 星期几的全名(如Monday) |
%a | 星期几的缩写(如Mon) |
%B | 月份的全名(如January) |
%b | 月份的缩写(如Jan) |
实例演示
2. 查看当前日期和时间
bash
# 默认格式显示
date
# 自定义格式显示(年-月-日)
date +"%Y-%m-%d"
# 自定义格式显示(年-月-日 时:分:秒)
date +"%Y-%m-%d %H:%M:%S"
# 显示时间戳
date +"%s"3. 日期计算
使用-d选项可以进行日期计算。
bash
# 查看明天的日期
date -d "+1 day" +"%Y-%m-%d"
# 查看昨天的日期
date -d "-1 day" +"%Y-%m-%d"
# 查看下个月的今天
date -d "+1 month" +"%Y-%m-%d"
# 查看上个月的今天
date -d "-1 month" +"%Y-%m-%d"
# 查看明年的今天
date -d "+1 year" +"%Y-%m-%d"
# 查看昨天的同一时间
date -d "yesterday" +"%Y-%m-%d %H:%M:%S"2. 修改Linux系统的时区
时区的概念
时区是地球上的区域使用同一个时间定义,地球被划分为24个时区,每个时区相差1小时。协调世界时(UTC)是全球标准时间,各地时区基于UTC进行偏移。
查看当前时区
bash
# 方法1:查看时区符号链接
ls -l /etc/localtime
# 方法2:使用date命令查看时区信息
date +"%Z"
# 输出解释:
# CST 通常表示以下三种时区之一:
# 1. China Standard Time (中国标准时间) - UTC+8(当系统时区设置为Asia/Shanghai时)
# 2. Central Standard Time (北美中部标准时间) - UTC-6
# 3. Cuba Standard Time (古巴标准时间) - UTC-5
# 在Rocky Linux 9中,当时区设置为Asia/Shanghai时,CST表示中国标准时间
# 方法3:使用timedatectl命令查看时区信息
timedatectl
# 方法4:查看时区文件内容(注意:Rocky Linux 9默认可能没有此文件)
# 对于Rocky Linux 9,时区信息主要存储在/etc/localtime符号链接中
# 对于Ubuntu/Debian系统,可以查看:
# cat /etc/timezone修改时区
方法1:使用timedatectl命令(推荐)
bash
# 查看可用时区列表
timedatectl list-timezones
# 设置时区为亚洲/上海
timedatectl set-timezone Asia/Shanghai
# 验证时区设置
timedatectl方法2:手动创建符号链接
bash
# 删除现有链接
rm -f /etc/localtime
# 创建新的符号链接
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 验证时区设置
date3. 使用NTP进行时间同步和校准
NTP概述
NTP(Network Time Protocol)是一种用于同步计算机时钟的网络协议,可以使计算机时间与全球标准时间保持一致。
安装时间同步服务
bash
# Rocky Linux 9/RHEL系统(推荐使用chrony)
dnf -y install chrony
# Ubuntu/Debian系统(推荐使用chrony)
apt-get -y install chrony
# Ubuntu/Debian系统(传统ntpd,已过时)
# apt-get -y install ntp启动和设置时间同步服务
bash
systemctl start chronyd
systemctl enable chronyd
systemctl status chronyd
# 传统ntpd服务(已过时,不推荐)
# systemctl start ntpd
# systemctl enable ntpd手动进行时间同步
使用chronyc命令可以手动进行时间同步。
bash
# 查看时间源状态(详细信息)
# 输出解释:
# ^* 表示当前正在使用的时间源
# ^+ 表示可接受的时间源
# ^? 表示连接失败的时间源
# ^- 表示被拒绝的时间源
chronyc sources -v
# 查看时间同步状态(详细信息)
# 输出解释:
# Reference ID: 时间源的ID
# Stratum: 时间源的层级(0为顶级,1为直接连接到顶级的服务器)
# Ref time (UTC): 参考时间
# System time: 系统时间与参考时间的偏差
# Last offset: 上次同步的时间偏移
# Root delay: 到根时间源的网络延迟
# Root dispersion: 时间源的最大误差
# Update interval: 同步间隔
# Leap status: 闰秒状态
chronyc tracking
# 强制立即同步时间
# 注意:在Rocky Linux 9中,普通用户执行此命令可能会报错
# 解决方法:使用sudo权限执行
# sudo chronyc makestep
chronyc makestep常见错误及解决方案:
- 错误:501 Not authorised 原因:普通用户没有权限执行makestep命令 解决方案:使用sudo权限执行:
sudo chronyc makestep注意:
- Rocky Linux 9默认使用chrony作为时间同步服务
- Ubuntu 20.04+也推荐使用chrony,它比传统的ntpd更快速、更准确
- chrony会自动同步时间,通常不需要手动干预
- Ubuntu默认可能已启用systemd-timesyncd轻量级时间同步服务
- 在生产环境中,建议保持chrony的自动同步机制,避免频繁手动同步
常用NTP服务器
| 服务器名称 | 服务器地址 |
|---|---|
| 阿里云NTP服务器 | ntp.aliyun.com |
| 中国科学院国家授时中心 | ntp.ntsc.ac.cn |
| 清华大学NTP服务器 | ntp.tuna.tsinghua.edu.cn |
| 腾讯云NTP服务器 | time1.cloud.tencent.com |
| 全球通用NTP服务器 | pool.ntp.org |
4. 关键命令参考
| 命令 | 功能描述 |
|---|---|
date | 查看当前日期和时间 |
date +"%Y-%m-%d" | 以年-月-日格式显示日期 |
date +"%Y-%m-%d %H:%M:%S" | 以年-月-日 时:分:秒格式显示日期时间 |
date -d "+1 day" | 查看明天的日期 |
date -d "-1 month" | 查看上个月的今天 |
ls -l /etc/localtime | 查看当前时区 |
timedatectl set-timezone Asia/Shanghai | 设置时区为亚洲/上海 |
dnf -y install chrony | 安装chrony时间同步服务(Rocky Linux) |
apt-get -y install chrony | 安装chrony时间同步服务(Ubuntu) |
systemctl start chronyd | 启动chrony时间同步服务 |
systemctl enable chronyd | 设置chrony服务开机自启 |
chronyc tracking | 查看时间同步状态 |
chronyc sources -v | 查看时间源状态 |
课程总结
这节课我们学了三个重点:
1. 查看和计算日期时间
- 用
date命令看当前时间,还能自定义显示格式 - 加
-d参数可以算日期,比如date -d "+1 day"就是明天
2. 设置时区
- 用
timedatectl set-timezone Asia/Shanghai就能改成中国时区
3. 自动同步时间
- 装个
chrony服务,系统时间就会自动和标准时间对齐 - 不管是 Rocky Linux 还是 Ubuntu,都推荐用 chrony
- 装完设置开机自启,以后就不用管时间准不准了
课后练习
- 使用date命令查看当前系统日期和时间,分别以不同格式显示
- 使用date命令计算明天、下周同一时间的日期
- 修改系统时区为Asia/Shanghai
- 安装chrony时间同步服务并设置开机自启
- 使用chronyc命令查看时间同步状态