WSL2时钟与Windows不同步
从睡眠/休眠状态恢复后,WSL2 时钟不同步。
在GitHub 上 共享了一个解决方法sudo hwclock -s来重新同步 WSL 中的时钟,但是每次从睡眠/休眠状态恢复时都必须执行此操作。
回答
如果有人通过搜索找到了这一点,并且没有注意到问题中实际上列出了一个解决方案,您可以通过修复 WSL 时钟漂移。
sudo hwclock -s
如果您只是偶尔需要这样做,这是一个很好的解决方案。如果您需要更频繁地执行此操作,请考虑@piouson 的解决方案
回答
更新:正如drkvogel所提到的,时钟同步修复是在WSL2 内核版本 5.10.16.3 中发布的
过时的
在撰写本文时,此GitHub 问题已针对该错误开放。
我为我的情况选择的解决方法(WSL2 中的单一发行版)是使用 Windows 任务计划程序hwclock在WSLWindows 重新同步硬件时钟时运行。
Windows:以管理员身份打开 PowerShell
schtasks /create /tn WSLClockSync /tr "wsl.exe sudo hwclock -s" /sc onevent /ec system /mo "*[System[Provider[@Name='Microsoft-Windows-Kernel-General'] and (EventID=1)]]"
Set-ScheduledTask WSLClockSync -Settings (New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries)
WSL2:运行
sudo visudo并添加hwclock到 sudoers 以跳过密码提示
schtasks /create /tn WSLClockSync /tr "wsl.exe sudo hwclock -s" /sc onevent /ec system /mo "*[System[Provider[@Name='Microsoft-Windows-Kernel-General'] and (EventID=1)]]"
Set-ScheduledTask WSLClockSync -Settings (New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries)
结果
有关如何从 Windows 事件过滤中获取事件 XPath,请参见图像。使用所提供的方式让任务计划程序自动显示计划的触发器。
回答
只需重新启动 wsl,它对我来说很好用
wsl --shutdown
然后
wsl
在 PowerShell 中
- my solution removes the need to restart each time, by using Windows Task Scheduler for auto re-run..
- I give options to anyone too lazy to do your solution. It's up to them to choose which one