間不同步怎么辦:3 條命令修好 WSL 時(shí)鐘與 Windows 時(shí)區(qū)同步(附診斷表))
WSL 時(shí)間不同步怎么辦3 條命令修好 WSL 時(shí)鐘與 Windows 時(shí)區(qū)同步附診斷表【免費(fèi)下載鏈接】WSLWindows Subsystem for Linux項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ws/WSLWSL 和 Windows 時(shí)間對(duì)不上、時(shí)區(qū)錯(cuò)位、/mnt/c 里的文件時(shí)間戳錯(cuò)亂——這三類(lèi)問(wèn)題最傷開(kāi)發(fā)效率。下面直接給解法先對(duì)照診斷表定位再用手動(dòng)同步 WSL 時(shí)鐘命令、wsl.conf 時(shí)區(qū)配置、chrony 自動(dòng)同步三條路把 WSL 時(shí)間同步修好最后用一條命令驗(yàn)證。1 分鐘定位問(wèn)題出在哪先對(duì)號(hào)入座再按對(duì)應(yīng)小節(jié)修現(xiàn)象可能原因?qū)?yīng)小節(jié)合蓋/睡眠后 WSL 時(shí)間跳變幾分鐘WSL 2 虛擬機(jī)的時(shí)鐘恢復(fù)后未追平WSL 時(shí)鐘手動(dòng)同步命令date時(shí)區(qū)偏移不對(duì)啟動(dòng)時(shí)的 Windows 時(shí)區(qū)映射失敗wsl.conf 時(shí)區(qū)配置Windows 任務(wù)計(jì)劃時(shí)間與 WSL 差固定小時(shí)數(shù)源頭在 Windows 主機(jī)時(shí)鐘主機(jī)時(shí)間源同步/mnt/c 下文件時(shí)間戳異常drvfs 掛載直接暴露 Windows 時(shí)間戳drvfs 時(shí)間戳核對(duì)按場(chǎng)景修復(fù)WSL 時(shí)鐘手動(dòng)同步命令喚醒后跳變現(xiàn)象合蓋再打開(kāi)WSL 里date比 Windows 慢或快幾十分鐘。 原因WSL 2 運(yùn)行在輕量虛擬機(jī)里掛起期間內(nèi)核時(shí)鐘暫?;謴?fù)時(shí)不會(huì)自動(dòng)追平系統(tǒng)里沒(méi)有硬件時(shí)鐘可用。 修復(fù)sudo apt-get install -y chrony sudo chronyd date # 與 Windows 任務(wù)欄對(duì)照驗(yàn)證等 30 秒后date的偏差應(yīng)在 1 秒內(nèi)。WSL 時(shí)區(qū)錯(cuò)位跟隨 Windows 時(shí)區(qū)映射失敗現(xiàn)象date顯示 UTC 或偏移與 Windows 不一致。 原因WSL 啟動(dòng)時(shí)會(huì)把 Windows 時(shí)區(qū)映射成 IANA 名寫(xiě)進(jìn)系統(tǒng)——時(shí)區(qū)同步由 src/linux/init/timezone.cpp 的UpdateTimezone實(shí)現(xiàn)把/etc/localtime軟鏈到/usr/share/zoneinfo/下對(duì)應(yīng)條目再把標(biāo)識(shí)寫(xiě)入/etc/timezone映射失敗或缺少 tzdata 包時(shí)它只會(huì)打警告跳過(guò)于是停留在舊值。 修復(fù)cat /etc/timezone; readlink /etc/localtime sudo apt-get install -y tzdata # 缺 tzdata 時(shí)先補(bǔ)上 sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime驗(yàn)證date的偏移如 0800與 Windows 任務(wù)欄一致。主機(jī)時(shí)間源同步Windows 時(shí)間本身不準(zhǔn)現(xiàn)象WSL 與 Windows 的差值是固定的且 Windows 側(cè)也不準(zhǔn)。 原因WSL 的時(shí)區(qū)映射和時(shí)間源都跟著 Windows 走源頭不對(duì)WSL 修得再勤也沒(méi)用。 修復(fù)PowerShellw32tmn /resync wsl --shutdown wsl -e date驗(yàn)證wsl -e date與任務(wù)欄時(shí)鐘一致。drvfs 時(shí)間戳核對(duì)/mnt/c 文件時(shí)間戳異常現(xiàn)象/mnt/c 下的文件stat出來(lái)的時(shí)間與 Windows 里顯示的不一樣。 原因WSL 2 中 /mnt/c 是 drvfs 掛載時(shí)間戳直接讀自 Windows 文件系統(tǒng)屬性不是 WSL 自己存的。 核對(duì)stat -c %y /mnt/c/某文件.txt touch /mnt/c/tst.txt; stat -c %y /mnt/c/tst.txt # 應(yīng)等于當(dāng)前時(shí)間驗(yàn)證與資源管理器里修改日期一致即正常不一致優(yōu)先回到上一節(jié)修 Windows 時(shí)鐘。一次配置長(zhǎng)期生效wsl.conf 時(shí)區(qū)持久化/etc/wsl.conf的[time]段控制啟動(dòng)時(shí)是否跟隨 Windows 時(shí)區(qū)開(kāi)關(guān)默認(rèn)開(kāi)啟見(jiàn) src/linux/init/WslDistributionConfig.h 中useWindowsTimezone默認(rèn)true[time] useWindowsTimezone true改完必須執(zhí)行wsl --shutdown再重新進(jìn)入 WSL 才生效——配置只在啟動(dòng)時(shí)讀取一次。驗(yàn)證date加readlink /etc/localtime。chrony 自動(dòng)時(shí)鐘同步chrony 是 NTP 的輕量客戶(hù)端裝上后長(zhǎng)期自動(dòng)追平漂移sudo apt-get install -y chrony echo makestep 1 3 server ntp.aliyun.com iburst | sudo tee -a /etc/chrony/chrony.confmakestep讓啟動(dòng)后幾分鐘內(nèi)的大偏差直接步進(jìn)修正WSL 沒(méi)有硬件時(shí)鐘不需要rtcfreq之類(lèi)針對(duì) RTC 的配置。驗(yàn)證chronyc tracking中System time偏差趨近 0。避坑清單只保留一個(gè)同步源啟用 chrony 前先timedatectl確認(rèn)沒(méi)有 systemd-timesyncd 在同時(shí)調(diào)鐘兩者打架會(huì)越調(diào)越偏Windows 是時(shí)間源頭WSL 側(cè)反復(fù)修不好時(shí)先w32tmn /resync改/etc/wsl.conf后記得wsl --shutdown配置不會(huì)熱加載跨 WSL 與 Windows 的腳本統(tǒng)一用 UTC 時(shí)間戳date -u比較別依賴(lài)本地時(shí)區(qū)/mnt/c 下文件時(shí)間戳歸 Windows 文件系統(tǒng)管構(gòu)建腳本別拿 /mnt 下的時(shí)間戳做增量判斷如果按上面步驟還修不好把date、chronyc tracking和 Windows 側(cè)w32tmn /query /status的輸出整理成 Issue 反饋給項(xiàng)目維護(hù)者?!久赓M(fèi)下載鏈接】WSLWindows Subsystem for Linux項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ws/WSL創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考