菜鸟科技网

Linux更改时间命令有哪些?

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

Linux更改时间命令有哪些?-图1
(图片来源网络,侵删)

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命令)。

Linux更改时间命令有哪些?-图2
(图片来源网络,侵删)

自定义时间格式

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同步等信息。

Linux更改时间命令有哪些?-图3
(图片来源网络,侵删)

设置时区

# 列出所有时区
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,系统通过时区转换显示本地时间,避免跨时区问题。

时间同步工具:ntpdchrony

对于需要高精度时间同步的服务器,建议使用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:可通过以下方式检查:

  1. 使用timedatectl status查看“NTP synchronized”状态是否为“yes”。
  2. 使用ntpq -p(安装ntp包后)查看NTP服务器连接状态,若出现标记的服务器,表示已同步。
  3. 使用chronyc sources(安装chrony后)查看同步源状态。
分享:
扫描分享到社交APP
上一篇
下一篇