当我休眠 Windows 10 笔记本电脑时,为什么(或如何停止)我的 WSL2 Ubuntu 22.04 实例会关闭?
我已经愉快地使用 WSL1 一段时间了,最近 WSL2 也正常工作了。我的 WSL1 Ubuntu 20 和 WSL2 Ubuntu 22 都在运行,然后让笔记本电脑休眠(即完全关闭电源,与睡眠不同)。启动时,我打开的所有程序都在我离开它们的地方,包括 WSL1 实例,但 WSL2 实例已关闭。
我的直觉是,这与我在 WSL2 实例上启用 systemd 有关,但这个功能太有用了,不能关闭(我宁愿忍受这个烦人的功能)。我怀疑是因为/var/log/syslog
那天的最后一条记录
systemd[1]: rsyslog.service: Sent signal SIGHUP to main process 149 (rsyslogd) on client request.
虽然我可能没有检查所有正确的日志,但并没有发现有关进程失败等其他明显错误。
主要是我的 google-fu 无法让我理解是什么创建了该消息以及如何阻止它被发送,或者阻止我的 WSL2 实例对其进行操作。
我希望找到一个简单的“将此咒语添加到你的 systemd.conf”那么当发送此 SIGHUP 时,我的 WSL2 将不会关闭。不过,如果发现有完全不同的解释,我也不会感到惊讶。
我的系统信息:
Windows 10 企业版
英特尔(R) 酷睿(TM) i7-8650U CPU @ 1.90GHz 2.11 GHz 16.0 GB
WSL2——Ubuntu 22.04
> wsl -v
WSL version: 1.1.3.0
Kernel version: 5.15.90.1
WSLg version: 1.0.49
MSRDC version: 1.2.3770
Direct3D version: 1.608.2-61064218
DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows version: 10.0.19045.2604
$ cat /etc/wsl.conf
[boot]
systemd=true
# Enable extra metadata options by default
[automount]
enabled = true
root = /mnt/
options = "metadata,uid=1000,gid=1000,umask=002"
mountFsTab = false
答案1
编辑:我已经有一个多星期没有遇到这个问题了。
@harrymc 所发表的评论看起来比我最初报告的更有帮助。
我们的网络团队暂时停止了捣鼓,所以我们的 VPN 连接又恢复稳定了,这也有帮助。此外,Windows 也进行了更新。我没有时间或耐心去弄清楚到底什么是灵丹妙药(如果有的话)。
然而,我对我的“以防万一”的解决方案非常满意,所以无论如何我都保留了它们。
这比我最初想象的还要随机。在 1 周内,我遇到过实例保持运行、退出、消失(崩溃?)以及只有当我查看它们时才消失的情况(它们在第二个桌面上,当我滑到它上面时,我看到了它们一秒钟)。
我没有试图去理解窗户的怪异之处,而是决定解决我对这种行为的主要不满。
一些黑客攻击我的.bashrc
- 失去历史
# Write history immediately so it isn't lost if/when the instance dies
PROMPT_COMMAND='history -a && history -n'
- 迷失了方向
# Create a new cd function that writes pwd to ~/.lwd each time
function cd()
{
builtin cd $1
pwd > ~/.lwd
}
# Start in the last folder we changed into
cd $(cat ~/.lwd)
这不是一个很好的解决方案,因为这意味着我的所有实例都在同一个地方打开,但总比没有好,而且与历史记录存储相结合就足够了。也许我可能会费心获取每个新实例的最后一个 cd、最后一个 -1、最后一个 -2 等,但这会变得很复杂。