在Linux系统中,时间管理是系统运维中的重要环节,无论是时区调整、时间同步还是手动修改时间,都离不开相关命令的灵活运用,Linux提供了多种命令来操作时间,本文将详细介绍常用的时间更改命令,包括date
、timedatectl
、hwclock
等,并辅以实例说明其用法,最后通过FAQs解答常见问题。

date
命令:查看和修改系统时间
date
是最基础的时间命令,默认显示当前系统的日期和时间,格式为“星期 月 日 时分秒 时区 年”,通过参数可以自定义输出格式或修改时间。
查看当前时间
date
示例输出:Wed Mar 15 14:30:25 CST 2023
修改系统时间
使用date -s
参数可以手动设置时间,格式需符合date
命令的解析规则。
# 设置日期和时间 date -s "2023-03-15 14:35:00" # 仅设置日期 date -s "20230315" # 仅设置时间 date -s "14:40:00"
注意:直接使用date -s
修改的时间是临时的,重启后会恢复为硬件时钟的时间,若需永久生效,需同步更新硬件时钟(见后文hwclock
命令)。

自定义时间格式
date
命令支持格式化输出,常用格式符号如下:
| 符号 | 说明 | 示例 |
|------|--------------------|--------------------|
| %Y | 年份(4位) | 2023 |
| %m | 月份(01-12) | 03 |
| %d | 日期(01-31) | 15 |
| %H | 小时(00-23) | 14 |
| %M | 分钟(00-59) | 30 |
| %S | 秒(00-60) | 25 |
| %F | 日期(YYYY-MM-DD) | 2023-03-15 |
| %T | 时间(HH:MM:SS) | 14:30:25 |
示例:
date "+%Y-%m-%d %H:%M:%S" # 输出:2023-03-15 14:30:25
timedatectl
命令:管理时间和时区(适用于systemd系统)
在基于systemd的Linux发行版(如Ubuntu 16.04+、CentOS 7+)中,timedatectl
是推荐使用的时间管理工具,集成了时间设置、时区调整、NTP同步等功能。
查看时间状态
timedatectl status
输出包括当前时间、时区、是否启用NTP同步等信息。

设置时区
# 列出所有时区 timedatectl list-timezones # 设置时区(如上海时区) timedatectl set-timezone Asia/Shanghai
启用/禁用NTP同步
NTP(网络时间协议)可自动同步系统时间与服务器时间,确保时间准确性。
# 启用NTP同步 timedatectl set-ntp true # 禁用NTP同步 timedatectl set-ntp false
注意:启用NTP后,手动修改的时间可能会被自动覆盖。
手动设置时间
禁用NTP后,可通过timedatectl set-time
设置时间:
# 设置日期和时间 timedatectl set-time "2023-03-15 14:40:00" # 仅设置日期 timedatectl set-time "2023-03-15"
hwclock
命令:管理硬件时钟
硬件时钟(RTC)是主板上的独立时钟,即使系统关闭也会运行,Linux系统时间启动时从硬件时钟读取,关机时同步回硬件时钟。
查看硬件时钟时间
hwclock # 或 hwclock --show
同步系统时间到硬件时钟
修改系统时间后,需同步到硬件时钟以确保重启后时间不丢失:
hwclock --systohc # 将系统时间写入硬件时钟
同步硬件时钟到系统时间
若硬件时钟错误,可将其同步到系统时间:
hwclock --hctosys # 将硬件时钟时间读取到系统
硬件时钟时区设置
硬件时钟默认使用UTC时间,若设置为本地时间,需调整:
# 查看硬件时钟时区 timedatectl | grep "RTC time" # 设置硬件时钟为本地时间(不推荐,可能导致问题) hwclock --localtime --systohc
建议:保持硬件时钟为UTC,系统通过时区转换显示本地时间,避免跨时区问题。
时间同步工具:ntpd
与chrony
对于需要高精度时间同步的服务器,建议使用NTP服务。
ntpd
:传统NTP服务,适合稳定网络环境。chrony
:更快的同步工具,适合网络波动较大的场景。
安装并启用chrony
(以CentOS为例):
yum install chrony -y systemctl enable chronyd --now
相关问答FAQs
Q1:为什么使用date
命令修改时间后重启又恢复了?
A:date
命令修改的是系统软件时钟,重启后会从硬件时钟(RTC)恢复时间,需执行hwclock --systohc
将系统时间同步到硬件时钟,或使用timedatectl set-ntp true
启用NTP自动同步。
Q2:如何检查Linux系统是否与NTP服务器同步成功?
A:可通过以下方式检查:
- 使用
timedatectl status
查看“NTP synchronized”状态是否为“yes”。 - 使用
ntpq -p
(安装ntp
包后)查看NTP服务器连接状态,若出现标记的服务器,表示已同步。 - 使用
chronyc sources
(安装chrony
后)查看同步源状态。