本文目录导读:

- Linux 系统(使用
ntpdate或chrony) - Windows 系统(PowerShell 或 CMD)
- macOS 系统(使用
sntp) - 跨平台通用脚本(利用 Python)
- 物联网/嵌入式设备(Shell 脚本)
- 使用建议与注意事项
Linux 系统(使用 ntpdate 或 chrony)
方法 A:使用 ntpdate(传统、简单)
如果你的系统安装了 ntpdate,可以直接使用:
#!/bin/bash # 同步系统时间 # 使用多个 NTP 服务器,如果第一个失败,尝试下一个 sudo ntpdate -u cn.pool.ntp.org || sudo ntpdate -u ntp.ubuntu.com || sudo ntpdate -u pool.ntp.org
说明:
-u参数绕过防火墙限制(使用非特权端口)。- 如果成功,系统时间会立即更新。
- 建议配合
cron任务(如每天凌晨执行)使用。
方法 B:使用 chrony(现代、推荐)
在大多数新 Linux 发行版(如 Ubuntu 18.04+, CentOS 8+)中,推荐使用 chrony:
#!/bin/bash # 强制立即同步(-I 选项) sudo chronyc makestep # 或者等待自动同步(通常只需几秒) # sudo chronyc waitsync 30
说明:
- 前提是系统已安装并启用了
chronyd服务。 makestep会立即进行时间跳变(适合刚开机或时间偏差大时)。- 使用
cron或systemd timer定期执行。
一键脚本(适用于 DEB/RPM 兼容系统):
#!/bin/bash
# 自动选择可用的同步工具
if command -v chronyc &> /dev/null; then
sudo chronyc makestep
elif command -v ntpdate &> /dev/null; then
sudo ntpdate -u pool.ntp.org
elif command -v timedatectl &> /dev/null; then
# 尝试使用 systemd-timesyncd
sudo timedatectl set-ntp true
sudo timedatectl status
else
echo "未找到合适的时间同步工具,请安装 chrony 或 ntpdate"
exit 1
fi
Windows 系统(PowerShell 或 CMD)
方法 A:使用 PowerShell(推荐)
# 同步系统时间(需要管理员权限) # 强制立即同步并更新 w32tm /resync /force
高级版本(修改时间服务器并同步):
# 以管理员身份运行 # 设置 NTP 服务器为阿里云或国家授时中心 w32tm /config /manualpeerlist:"ntp.aliyun.com,0x8 time.nist.gov,0x8" /syncfromflags:manual /update # 强制重新同步 w32tm /resync /rediscover
方法 B:使用批处理(CMD)
@echo off
echo 正在同步系统时间...
w32tm /resync /force
if %errorlevel% equ 0 (
echo 时间同步成功!
) else (
echo 同步失败,请检查网络或权限。
)
pause
说明:
- 必须以管理员身份运行,否则会报错(错误码 5)。
- 该命令在 Windows 10/11 和 Windows Server 2016+ 上有效。
macOS 系统(使用 sntp)
#!/bin/bash # macOS 同步时间 # 需要管理员权限 sudo sntp -sS time.apple.com # 或者使用系统自带的时间服务 # sudo systemsetup -setusingnetworktime on # sudo systemsetup -setnetworktimeserver time.apple.com
说明:
-s表示只设置一次(不进入守护进程模式)。-S立即生效。- 如果系统启用了“日期与时间 > 自动设置”(System Preferences),通常无需手动同步。
跨平台通用脚本(利用 Python)
#!/usr/bin/env python3
# 用途:简单的 HTTP 时间同步(不依赖系统 NTP 服务)
# 原理:通过 HTTP 响应头获取时间
import requests
import socket
import struct
import time
def sync_via_http():
# 方式1:使用 HTTP 请求头(最可靠)
try:
r = requests.get('https://www.baidu.com', timeout=5)
# 解析标准化的 Date 头
server_time = r.headers['date']
# 转换为本地时间并直接设置(需要权限)
# 注意:Python 无法直接设置系统时间,需要调用系统命令
print(f"服务器时间: {server_time}")
# 这里可以调用系统命令:ntpdate、date 等
return True
except:
return False
# 或者实现 SNTP 协议(更精确)
def sync_via_sntp(server="ntp.aliyun.com"):
# SNTP 协议实现(简化版)
NTP_DELTA = 2208988800 # 1900-1970 年的秒数差
try:
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
client.settimeout(2)
# 构造 NTP 请求包(RFC 4330)
data = b'\x1b' + 47 * b'\0'
client.sendto(data, (server, 123))
response, _ = client.recvfrom(1024)
t = struct.unpack("!12I", response)[10] - NTP_DELTA
print(f"NTP 服务器时间(Unix时间戳): {t}")
# 在此处调用系统命令设置时间
return True
except:
return False
if __name__ == "__main__":
sync_via_sntp()
物联网/嵌入式设备(Shell 脚本)
#!/bin/sh
# 适用于 BusyBox / OpenWrt 等精简系统
# 需要具有 root 权限
# 方式1:使用 busybox 自带的 ntpdate
busybox ntpdate -n -p 4 0.cn.pool.ntp.org
# 方式2:直接通过 TCP 获取 HTTP 时间(精简版)
# 使用日期命令的解析功能(需依赖 wget 或 curl)
echo "Retrieving time from HTTP..."
SERVER_TIME=$(curl -sI --max-time 5 https://www.qq.com | grep -i '^date:' | cut -d' ' -f2-)
if [ -n "$SERVER_TIME" ]; then
date -s "$SERVER_TIME"
echo "时间已同步: $SERVER_TIME"
fi
使用建议与注意事项
-
权限问题:修改系统时间通常需要 root/管理员 权限,脚本中应使用
sudo或以管理员身份运行。 -
服务器选择:
- 中国地区常用:
ntp.aliyun.com、ntp.tencent.com、cn.pool.ntp.org - 国际通用:
pool.ntp.org、time.google.com、time.apple.com
- 中国地区常用:
-
定时执行:
- Linux:添加 crontab 任务(
sudo crontab -e),例如每天凌晨 3 点执行:0 3 * * * /path/to/your_script.sh - Windows:使用任务计划程序。
- Linux:添加 crontab 任务(
-
防火墙:如果使用 NTP(UDP 123端口)被防火墙阻塞,建议使用
-u参数(Linux ntpdate)或改为 HTTP/HTTPS 时间同步。 -
虚拟环境:虚拟机同步时间有时会出现偏差,建议在宿主机上开启时间同步功能,然后在虚拟机内禁用 NTP 服务以避免冲突。
如果只是经常手动同步,推荐使用 Linux 的 chrony 或 Windows 的 w32tm 通过任务计划程序,这样可以自动保持系统时间准确。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播