AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1619752
Accepted
Julien B.
Julien B.
Asked: 2021-01-22 19:25:38 +0800 CST2021-01-22 19:25:38 +0800 CST 2021-01-22 19:25:38 +0800 CST

WSL2 Ubuntu 时间使用错误的 TZ 来计算定位时间?

  • 772

我有一台在 Windows 10 中运行的 Ubuntu 18.04 WSL2 机器,有时我会遇到这个奇怪的问题,即 WSL2 机器中的时间不同步。我的时区是东部时间 (-5),正如您在下面看到的,我的 WSL 是未来 5 小时。感觉好像出于某种原因,我的 WSL 机器将我的本地时间解释为 UTC,并根据该信息进行计算。

WSL2

$ date 
Fri Jan 22 03:13:28 EST 2021
$ cat /etc/timezone
America/Toronto
$ date +"%Z %z"
EST -0500

电源外壳

> date
Thursday, January 21, 2021 10:13:31 PM
> Get-TimeZone


Id                         : Eastern Standard Time
DisplayName                : (UTC-05:00) Est (É.-U. et Canada)
StandardName               : Est
DaylightName               : Est (heure d’été)
BaseUtcOffset              : -05:00:00
SupportsDaylightSavingTime : True

我试着做一个sudo dpkg-reconfigure tzdata,但没有帮助。

编辑:添加屏幕截图,时间与我之前提到的时间不匹配,但屏幕截图显示了正确的本地时间和时区。

在此处输入图像描述

ubuntu time-zone
  • 1 1 个回答
  • 1701 Views

1 个回答

  • Voted
  1. Best Answer
    Ramhound
    2021-01-22T21:07:19+08:002021-01-22T21:07:19+08:00

    我有一台在 Windows 10 中运行的 Ubuntu 18.04 WSL2 机器,有时我会遇到这个奇怪的问题,即 WSL2 机器中的时间不同步。我的时区是东部时间 (-5),正如您在下面看到的,我的 WSL 是未来 5 小时。感觉好像出于某种原因,我的 WSL 机器将我的本地时间解释为 UTC,并根据该信息进行计算。

    这是 WSL2 的一个已知问题:系统日期与 windows (WSL 2) #4245 不同

    您必须在 WSL2 实例中运行以下命令:

    sudo hwclock -s
    

    您可以改为运行以下 PowerShell 命令:

    wsl -u root sh -C "hwclock -S"
    

    您还必须执行以下 PowerShell 命令:

    wsl --shutdown
    

    运行该命令后,您必须重新启动 WSL 实例。

    该解决方案还需要将 Chrony 与以下注释的选项一起使用/etc/chrony/chrony.conf

    # Stop bad estimates upsetting machine clock.
    # maxupdateskew 100.0
    

    如果您还没有使用它:

    sudo apt-get update && sudo apt-get install -y chrony && sudo chronyd
    

    另一种解决方案是将以下内容添加到 .bashrc:

    # WSL2 clock skew hack
    __customprompt() {
      NOW=$(date +%s)
      if (( NOW > WSL_NEXT_CLOCKSYNC )); then
        echo "$(date -Iseconds) - hwclock [$WSL_NEXT_CLOCKSYNC : $NOW]" >> ~/.wsltimesync
        nohup wsl.exe -u root -c 'hwclock -s' &>/dev/null &
        export WSL_NEXT_CLOCKSYNC=$(date --date='+5 minutes' +%s)
      fi
    }
    

    资源:

    • WSL2 时钟偏差破解

    • WSL2 时钟偏差破解

    另一种替代解决方案是根据记录的特定事件的检测在 Windows 中自动处理它。

    这可以通过以下 PowerShell 脚本来处理:

    function Log($message) {
        $output = (Get-Date).ToUniversalTime().ToString("u") + "`t$message"
        Add-Content -Path "~/.wsl-clock.log" -Value $output
    }
    
    Log "********************************"
    Log "*** Update WSL clock starting..."
    
    $runningDistroCount = wsl --list --running --quiet |
            Where-Object {$_ -ne ""} |
            Measure-Object |
            Select-Object -ExpandProperty Count
    
    if ($runningDistroCount -eq 0){
        Log "No Distros - quitting"
        exit 0
    }
    
    $originalDate=wsl sh -c "date -Iseconds"
    
    Log "Performing reset..."
    $result = wsl -u root sh -c "hwclock -s" 2>&1
    $success = $?
    if (-not $success){
        Log "reset failed:"
        Log $result
        exit 2
    } else {
        $newDate=wsl bash -c "date -Iseconds"
        Log "clock reset"
        Log "OriginalDate:$originalDate"
        Log "NewDate:     $newDate"
        exit 0
    }
    

    资料来源:使用 WSL 2 修复时钟偏差

    你也可以使用wsl-clock

    其他资源:

    • WSL2 中的时间未同步 - 导致 TLS 问题 #4149

    • 从睡眠中醒来后 WSL2 日期不正确 #5324

    • 时间同步

    • Homestead 应该在 Hyper-V #1300 上启用 host->guest 时钟同步

    • 2

相关问题

  • 与 putty 和 Ubuntu 集成

  • 无法打开 Windows 10 和在 Hyper-v 上创建的本地托管的 Ubuntu VM 之间的端口

  • Docker 容器 ssh 错误:ssh_exchange_identification: Connection closed by remote host

  • apache2 可以在没有 conf 文件的情况下工作吗?

  • vmwared 共享文件夹不工作

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve