用命令行更改系统时间,一步到位

2025.7.14 杂七杂八 1509
33BLOG智能摘要
命令行改时间:Linux/Windows双系统时间同步实战 命令行修改系统时间在生产环境中更可靠,可批量操作。文章介绍Linux下分两步:先用date命令设置系统时间,再用hwclock同步到硬件时钟。要注意直接改时间可能导致systemd-timesyncd服务自动改回,故建议关闭NTP服务后再操作。另外推荐timedatectl命令,可以同时处理时区和NTP设置。Windows下可使用PowerShell命令Set-Date修改,必要时管理员权限;传统cmd用户用旧命令time和date。 双系统时间同步问题是由于Linux用UTC时间,Windows用本地时间。建议解决方案是让Windows也使用UTC,可通过修改Windows注册表设置,或Linux强制使用本地时间(不推荐)解决。最终建议所有服务器配置NTP自动同步网络时间,Linux可安装chrony,Windows使用w32tm命令配置池。作者建议保存脚本方便下次直接使用,并欢迎读者分享其他时间问题。
— 此摘要由33BLOG基于AI分析文章内容生成,仅供参考。

命令行改时间:Linux/Windows双系统时间同步实战

用命令行更改系统时间,一步到位

上周调试一个分布式系统时,被服务器时间不同步坑得够呛。明明代码没问题,却因为几台机器的时间差导致数据对不上。今天就把我整理的命令行改时间方法分享出来,特别是双系统用户的时间同步技巧,绝对实用。

为什么命令行改时间更靠谱?

很多人习惯用图形界面改时间,但我在生产环境遇到过好几次GUI时间设置失效的情况。命令行方式不仅更可靠,还能写进脚本批量操作。记得有次给20台服务器同步时间,用for循环配合ssh十分钟就搞定了,这效率GUI根本比不了。

Linux系统时间设置

在Linux下改时间要分两步走:先用date改系统时间,再用hwclock同步到硬件时钟。这里有个坑要注意——直接改时间可能导致systemd-timesyncd服务自动改回来。

# 先关闭时间同步服务
sudo timedatectl set-ntp false

# 设置新时间(格式:月日时分年.秒)
sudo date 010203042023.30

# 写入硬件时钟
sudo hwclock --systohc

我更喜欢用timedatectl这个全能命令,它能同时处理时区和NTP设置:

sudo timedatectl set-time "2023-01-02 03:04:30"

Windows系统时间设置

Windows下用PowerShell改时间更简单,但需要管理员权限。有次帮同事调试,发现他用的普通用户权限,命令执行了却没生效,排查了半天才发现是权限问题。

# 管理员模式运行
Set-Date -Date "01/02/2023 03:04:30"

传统cmd用户可以用老命令:

time 03:04:30
date 01-02-2023

双系统时间同步的坑

装过双系统的同学肯定遇到过这个问题:进Windows发现时间快了8小时。这是因为Linux用UTC时间,Windows用本地时间。我的解决方案是让Windows也使用UTC:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTimeZoneInformation]
"RealTimeIsUniversal"=dword:00000001

或者在Linux里强制使用本地时间(不推荐):

sudo timedatectl set-local-rtc 1

自动同步网络时间

最后安利下NTP自动同步,这才是终极解决方案。我在所有服务器上都配置了:

# Linux安装chrony
sudo apt install chrony
sudo systemctl enable chronyd

# Windows配置NTP
w32tm /config /syncfromflags:manual /manualpeerlist:"pool.ntp.org"
net stop w32time && net start w32time

时间同步看似简单,但实际工作中很多诡异问题都是它引起的。建议大家把本文的命令保存成脚本,下次遇到时间问题直接拿来就用。如果你们还遇到过其他时间相关的坑,欢迎在评论区分享~

评论

  • 学到了!之前双系统时间问题困扰我好久,原来Windows可以直接改注册表解决。

  • 有没有人试过在macOS下同步时间?一直用Linux和macOS双系统,时间总是不一致。