凌峰创科服务平台

linux 获取服务器时间

在Linux系统中获取服务器时间是系统管理和运维中的基础操作,准确的时间同步对于日志记录、任务调度、安全审计等至关重要,Linux系统提供了多种命令和工具来获取、设置和管理时间,以下将详细介绍常用方法及其原理。

linux 获取服务器时间-图1
(图片来源网络,侵删)

使用date命令获取当前时间

date是最基础的时间查看命令,默认显示本地时间(硬件时钟结合系统时间),基本用法为:

date

输出格式示例:Wed Oct 25 14:30:45 CST 2025,其中CST表示中国标准时间,若需自定义格式,可通过加格式化符号实现,

date "+%Y-%m-%d %H:%M:%S"  # 输出:2025-10-25 14:30:45

常用格式化符号包括:

  • %Y:四位年份(如2025)
  • %m:两位月份(01-12)
  • %d:两位日期(01-31)
  • %H:24小时制小时(00-23)
  • %M:分钟(00-59)
  • %S:秒(00-60,60用于闰秒)

查看硬件时钟与系统时间

Linux系统包含两个时钟概念:

linux 获取服务器时间-图2
(图片来源网络,侵删)
  1. 系统时间:由Linux内核维护,关机后丢失。
  2. 硬件时钟(RTC):由主板电池供电,关机后仍运行。

使用hwclock命令可查看硬件时钟:

hwclock  # 显示硬件时钟时间,默认本地时间
hwclock -u  # 显示UTC时间

同步硬件时钟与系统时间:

hwclock --hctosys  # 硬件时钟同步到系统时间
hwclock --systohc  # 系统时间同步到硬件时钟

使用timedatectl管理时间(推荐)

现代Linux发行版(如Ubuntu 16+、CentOS 7+)采用systemd管理时间,timedatectl是官方推荐工具,查看当前时间状态:

timedatectl status

输出信息包括:

  • 本地时间、UTC时间、RTC时间
  • 时区设置
  • 是否启用NTP时间同步

设置时区:

timedatectl set-timezone Asia/Shanghai  # 设置为上海时区

NTP时间同步

长时间运行的服务器可能因时钟漂移导致时间偏差,需通过NTP(Network Time Protocol)同步时间,安装NTP服务:

# Ubuntu/Debian
sudo apt install ntp
# CentOS/RHEL
sudo yum install ntp

启动并设置开机自启:

sudo systemctl start ntp
sudo systemctl enable ntp

检查NTP同步状态:

ntpq -p  # 查看NTP服务器列表及同步状态

若使用chrony(更轻量的NTP客户端):

sudo apt install chrony  # Ubuntu/Debian
sudo yum install chrony  # CentOS/RHEL
sudo systemctl start chronyd
sudo systemctl enable chronyd
chronyc sources  # 查看chrony同步源

通过/proc/sys文件获取时间

Linux内核通过虚拟文件暴露时间信息:

cat /proc/time  # 获取内核时间戳(jiffies计数器)
cat /proc/uptime  # 系统运行时间(秒)和空闲时间

Python脚本获取时间

通过Python的datetime模块可灵活获取时间:

import datetime
now = datetime.datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S"))

时间格式化对比

以下为常用时间格式化符号对照表:

符号 含义 示例
%Y 四位年份 2025
%y 两位年份 23
%m 两位月份 10
%B 月份全称 October
%d 两位日期 25
%H 24小时制小时 14
%I 12小时制小时 02
%M 分钟 30
%S 45
%z 时区偏移量 +0800
%F 日期(%Y-%m-%d) 2025-10-25

相关问答FAQs

Q1: 如何将Linux服务器时间同步为UTC时间?
A1: 使用timedatectl命令设置时区为UTC:

sudo timedatectl set-timezone UTC

若需同步硬件时钟,执行:

sudo hwclock --systohc

Q2: 为什么服务器时间与NTP服务器不同步?
A2: 可能原因包括:

  1. NTP服务未启动或未配置正确的NTP服务器(检查/etc/ntp.conf/etc/chrony.conf);
  2. 防火墙阻断了UDP 123端口(NTP默认端口);
  3. 硬件时钟偏差过大,需先手动同步时间再启用NTP。
    可通过ntpq -pchronyc sources查看同步状态,若无标识的同步源,说明未成功同步。
分享:
扫描分享到社交APP
上一篇
下一篇