wsl2(Windows Subsystem Linux 2) 给在Windows上的开发带了非常多的便利,不过wsl2莫名奇妙死掉的情况还是很多的,比如当Windows从休眠状态恢复之后。
在最近的一些版本升级之后(wsl .exe --update
),我发现wsl2在挂掉之后很难恢复,而VmmemWSL进程还有可能占用大量的内存和CPU,并且在任务管理器下根本杀不掉。
如何彻底的关闭掉wsl2的进程并且重启wsl2呢?首先以下几种方式似乎是没用的
- 在powershell下,敲
wsl.exe --shutdown
- 重启LXSSMANAGER服务(在Admin模式的powershell下敲
Restart-Service LxssManager
) - 重启Hyper-V Virtual Machine Management服务(在Admin模式的powershell下敲
Restart-Service vmms
)
上面的方法一些方法在更老的版本可以工作,目前来说,在wsl2死掉之后最为有效的重启方法是在Admin模式的powershell下执行下面的命令(from https://superuser.com/a/1778328/499516 )
taskkill /f /im wslservice.exe
执行之后,已经死掉的wsl进程窗口就会提示
[process exited with code 1 (0x00000001)]
You can now close this terminal with Ctrl+D, or press Enter to restart.
然后就可以按Enter重启了。