Linux date 命令调整与查看系统时间

7次阅读

date命令可查看和设置系统时间(需root),但仅影响软件时钟;同步硬件时钟需hwclock;推荐用timedatectl启用ntp自动校准,并确认时区设置。

Linux date 命令调整与查看系统时间

linux 中的 date 命令既能查看当前系统时间,也能手动设置时间(需 root 权限),但要注意它只影响系统软件时钟,不直接同步硬件时钟(RTC)——除非额外调用 hwclock

查看当前系统时间

运行以下命令即可显示本地时区下的完整日期与时间:

  • date —— 默认格式,如 Wed Apr 10 15:23:41 CST 2024
  • date +"%Y-%m-%d %H:%M:%S" —— 自定义格式,输出类似 2024-04-10 15:23:41
  • date -u —— 显示协调世界时(UTC),不带时区转换

临时修改系统时间(需 root)

仅建议在测试、调试或无 NTP 服务的离线环境中使用。普通用户无法执行;必须用 sudo 或切换为 root:

  • sudo date -s "2024-04-10 15:30:00" —— 设置具体时间
  • sudo date -s "15:30:00" —— 只改时间,日期保持不变
  • sudo date -s "next day" —— 快进一天(支持自然语言表达)

⚠️ 注意:该操作仅更新内核维护的系统时间(software clock),重启后若未同步到硬件时钟,可能恢复旧值。

将系统时间写入硬件时钟

为防止重启后时间丢失,设好系统时间后应同步到主板 RTC:

  • sudo hwclock --systohc —— 把当前系统时间写入硬件时钟(推荐加 --utc 参数若 BIOS 设为 UTC 模式)
  • sudo hwclock --show —— 查看硬件时钟当前值,用于比对是否同步成功

多数现代发行版默认启用 systemd-timesyncd 或 NTP 服务,会自动定期校准时间,手动设置前建议先停用:sudo systemctl stop systemd-timesyncd(或 chronyd/ntpd)。

快速校准时间(推荐方式)

比起手动设时间,更安全可靠的做法是用网络时间协议自动同步:

  • sudo timedatectl set-ntp true —— 启用系统级 NTP 自动同步(systemd 环境)
  • sudo ntpdate -s time.windows.com —— 一次性强制同步(ntpdate 已被弃用,仅作临时应急)
  • timedatectl status —— 查看时区、NTP 状态、系统/硬件时钟是否一致

确认时区正确也很关键:sudo timedatectl set-timezone Asia/Shanghai

text=ZqhQzanResources