Linux查看系统时间

Linux查看系统时间

引言

日志时间对不上、证书过期误判、定时任务不对点,常常是系统时间不准导致的。运维第一件事就是date看时间、timedatectl看时区,服务器必须用NTP同步,否则业务时间戳全乱。

查看当前时间:date

date

输出年月日、时分秒和时区,最常用。

自定义格式输出

date +"%Y-%m-%d %H:%M:%S"
# 2026-10-21 07:03:00

脚本里取指定格式时间做日志前缀。

查看时间戳

date +%s

输出当前Unix时间戳,排查时间差时用。

查看时区与NTP状态

timedatectl

显示本地时间、UTC、时区、NTP同步是否开启,比date信息全。

硬件时间 vs 系统时间

hwclock --show

读主板RTC硬件时钟,系统时间和硬件时间不一致会导致重启后时间跳变。

手动同步一次

timedatectl set-ntp true
# 或
ntpdate ntp.aliyun.com

开启NTP自动同步,国内用阿里云或ntp.aliyun.com源。

注意事项

  • 云服务器一般已开NTP,别手动硬改时间;
  • 时间跳变会影响日志排序和证书有效期判断;
  • 容器内时间默认跟宿主机,宿主机准了容器就准;
  • 时区不对用timedatectl set-timezone Asia/Shanghai;
  • 不要随便set-time往前拨,数据库主从时间差会出问题;
  • 定时任务执行异常先查系统时间和时区。

总结

date看当前时间、date+%s取时间戳、timedatectl看时区和NTP状态、hwclock看硬件时钟。服务器开启NTP自动同步,时区设Asia/Shanghai,时间不对先查NTP和时区,别手动硬改,时间跳变会影响日志、证书和数据库主从,定时任务异常优先核对系统时间。


emer 发布于  2026-10-21 07:03 

Linux查看和修改系统时间,date和timedatectl命令

前言

服务器时间不对?日志时间戳对不上?定时任务不准?这些问题都和系统时间有关。Linux 服务器的时间很重要,日志、定时任务、证书过期时间都依赖系统时间。时间不准会出各种奇怪的问题。本文就讲一下怎么查看和修改 Linux 系统时间,以及怎么设置时区。

查看系统时间

方法一:date 命令

date

输出示例:

Mon Oct  5 10:30:45 CST 2026

CST 就是中国标准时间(China Standard Time)。

方法二:timedatectl 命令(推荐)

timedatectl

输出示例:

               Local time: Mon 2026-10-05 10:30:45 CST
           Universal time: Mon 2026-10-05 02:30:45 UTC
                 RTC time: Mon 2026-10-05 02:30:46
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

这个命令显示的信息更全:本地时间、UTC时间、硬件时间、时区、是否同步、NTP服务状态。

设置时区

查看当前时区

timedatectl

看 Time zone 那行。

查看所有可用时区

timedatectl list-timezones

或者:

ls /usr/share/zoneinfo/

设置时区为上海

timedatectl set-timezone Asia/Shanghai

这是最常用的,国内服务器一般都设成这个。

验证

timedatectl

看 Time zone 那行是不是变成了 Asia/Shanghai。

手动设置时间

不推荐手动设置

一般情况下,时间不准了应该用 NTP 自动同步,不要手动设。手动设的时间过一段时间又会不准。

但如果确实需要手动设:

设置日期和时间

date -s "2026-10-05 10:30:45"

只设置时间

date -s "10:30:45"

只设置日期

date -s "2026-10-05"

NTP 时间同步

安装 NTP 服务

CentOS7 用 chronyd:

yum install chrony -y

启动并设置开机自启

systemctl start chronyd
systemctl enable chronyd

查看同步状态

timedatectl

看 System clock synchronized: yes 就是同步成功了。

手动同步一次

chronyc makestep

常见时间格式

date 命令可以格式化输出:

输出年月日

date +%Y-%m-%d

输出:

2026-10-05

输出时分秒

date +%H:%M:%S

输出完整日期时间

date +"%Y-%m-%d %H:%M:%S"

时间戳

date +%s

输出 Unix 时间戳(秒数)。

从时间戳转换

date -d @1728100000

实际应用场景

场景1:日志时间不对

看日志发现时间戳不对,先查系统时间:

date

如果时间不对,改时区:

timedatectl set-timezone Asia/Shanghai

场景2:定时任务不准

crontab 定时任务执行时间不对,先看系统时间:

date

时间不对就同步 NTP。

场景3:证书过期时间不对

SSL 证书过期时间对不上,也是系统时间的问题。

场景4:脚本里用到时间戳

写脚本的时候需要获取当前时间戳:

now=$(date +%s)

常见坑

坑1:时区不对导致日志时间差8小时

服务器装完默认是 UTC 时区,比北京时间晚8小时。

解决: 设置成上海时区:

timedatectl set-timezone Asia/Shanghai

坑2:改了时间但硬件时间没同步

手动改了系统时间,重启之后又变回去了,因为硬件时间(RTC)没改。

解决: 用 NTP 同步就不用管这个,NTP 会自动同步硬件时间。

坑3:NTP 服务没启动

装了 NTP 但没启动,时间还是不同步。

解决:

systemctl start chronyd
systemctl enable chronyd

坑4:手动设时间后过一会儿又不准了

手动设的时间不准,因为系统时钟会漂移。

解决: 用 NTP 自动同步,不要手动设。

总结

查看和修改系统时间的核心命令:

  1. date:快速看当前时间
  2. timedatectl:看完整时间信息(时区、NTP同步状态)
  3. timedatectl set-timezone Asia/Shanghai:设置时区
  4. chronyd:NTP时间同步服务

服务器时间一定要准,用 NTP 自动同步,不要手动设。国内服务器时区设成 Asia/Shanghai。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-5 07:46 
'); })();