如何在 Linux 中修改系统时间(手动与 NTP)
Posted on Wed, 25 Dec 2024 13:55:57 +0800 by LiangMingJian
如何在 Linux 中修改系统时间(手动与 NTP)
前言
在 Linux 系统中,时间分为系统时间和硬件时间,这两种时间可以通过以下命令查看:
# 系统时间
date
# 硬件时间
hwclock --show
clock --show
在 Linux 系统运行过程中,系统时间和硬件时间互不影响,各自独立运行。硬件时间的运行靠 Bios 电池维持,而系统时间则使用 CPU Tick (CPU 周期性的时钟中断)维持。
在 Linux 系统开机的时候,系统会自动从 Bios 中获取硬件时间,然后执行同步,将其设置给系统时间。
在系统开机后,则需要使用下文中的方法来修改硬件时间和系统时间。
通过 date 手动修改时间
在 Linux 中,修改系统时间可以通过 date 命令来进行实现。
查看时间和日期
date
# Wed Oct 22 10:40:28 CST 2025
date -R
# Wed, 22 Oct 2025 10:40:45 +0800
# 携带时区信息,+0800,东8区
修改时间
# 只修改年月日
date -s "2025-10-22"
# 只修改时分秒
date -s "15:30:00"
# 全部修改
date -s "2025-10-22 15:30:00"
同步硬件时间
特别的,以上修改都是临时的,如果要保证设备重启后时间还是修改后的内容,需要将时间写入 BIOS。
# 将硬件时间同步至系统时间
hwclock --hctosys
hwclock -w
# 将系统时间同步至硬件时间
hwclock --systohc
hwclock -s
修改时区
时区的修改需要将 /usr/share/zoneinfo 里面的时区文件连接到当前使用的时区文件 /etc/localtime。
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
通过 ntp 修改时间
NTP 服务的使用需要先安装 NTP 软件包。
安装 ntp 软件
yum install -y ntp
安装成功后,便可以通过编辑配置文件 /etc/ntp.conf 来设置 NTP 服务地址。
设置 NTP 服务器
vi /etc/ntp.conf

建议修改为:
# 阿里云服务,prefer 优先使用
server ntp.aliyun.com prefer
# NTP Pool Project,iburst 系统启动后快速同步
server 0.cn.pool.ntp.org iburst
server 1.cn.pool.ntp.org iburst
server 2.cn.pool.ntp.org iburst
server 3.cn.pool.ntp.org iburst
启动 NTP 服务
systemctl start ntpd
systemctl enable ntpd
特别注意,在启动后需要开放 NTP 端口 123,避免防火墙阻碍。
firewall-cmd --zone=public --add-port=123/tcp --permanent
firewall-cmd --zone=public --add-port=123/udp --permanent
firewall-cmd --reload
状态检查
# 检查服务状态
systemctl status ntpd
# 检查同步状态
ntpq -p
# 检查同步信息
ntpstat
