在不重新启动 Windows 的情况下在 Windows 上重新启动 Ubuntu?

Lou*_*eru 268 windows-10 windows-subsystem-for-linux

是否可以在不重新启动系统的情况下重新启动 Ubuntu 子系统?

shutdown在安装一些更新后尝试使用该命令,但这似乎不是一个选项。

在 Windows 上重击。 需要重新启动。 关机:无法关闭系统

Sam*_*nty 387

关闭一切: Build 18917+

wsl.exe --shutdown
Run Code Online (Sandbox Code Playgroud)

终止特定发行版: Windows 1903+

wsl.exe -t <DistroName>
Run Code Online (Sandbox Code Playgroud)

旧版本

# PowerShell (admin)
Restart-Service LxssManager

# or CMD (admin)
net stop LxssManager
net start LxssManager
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 与“wsl2”完美配合! (2认同)

小智 77

在管理 PowerShell 提示符下: Restart-Service LxssManager

  • @RajeshS 它可能很短,但它确实回答了这个问题。 (16认同)
  • 我只是反复得到这个`警告:等待服务'LxssManager(LxssManager)'停止......` (15认同)
  • 这完美地工作。只需先以管理员权限启动您的 powershell。 (4认同)

nyu*_*a7h 36

自 Windows 10 版本 1803 起,关闭所有 WSL 终端窗口默认不会终止后台进程,除非该文件/var/run/reboot-required存在。当更新需要重启时,Ubuntu 上的 apt 会自动创建这个文件,但是如果你想手动重启子系统,你可以自己创建这个文件:

sudo touch /var/run/reboot-required
Run Code Online (Sandbox Code Playgroud)

我尚未在 Microsoft Store 中提供的其他发行版上对此进行测试。另一种解决方案是自己杀死所有进程:

sudo killall -r '.*'
Run Code Online (Sandbox Code Playgroud)


小智 19

只需以管理员身份打开一个 cmd 窗口并运行这些命令来重新启动它。

net stop LxssManager
net start LxssManager
Run Code Online (Sandbox Code Playgroud)

  • 在这两个命令之间添加几秒钟。例如“timeout /t 3”命令(添加 3 秒)。 (2认同)
  • 这重复了 samdd 8 月份的回答。 (2认同)
  • “LxssManager 服务正在停止...................................... ..................... 无法停止 LxssManager 服务。” :-/ (2认同)

Lou*_*eru 11

简单地退出外壳exit并重新打开似乎可以解决问题。shell 需要以管理员身份运行。

Louis@ATHENA:~$ bin/rcheck.sh
Reboot not necessary.

Louis@ATHENA:~$ bin/update.sh
[sudo] password for Louis:
The following packages will be upgraded:
  libssl1.0.0 openssl
2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Get:1 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libssl1.0.0 amd64 1.0.1f-1ubuntu2.21 [830 kB]
Get:2 http://archive.ubuntu.com/ubuntu/ trusty-updates/main openssl amd64 1.0.1f-1ubuntu2.21 [489 kB]
Setting up libssl1.0.0:amd64 (1.0.1f-1ubuntu2.21) ...
Setting up openssl (1.0.1f-1ubuntu2.21) ...
Del libssl1.0.0 1.0.1f-1ubuntu2.20 [830 kB]
Del openssl 1.0.1f-1ubuntu2.20 [489 kB]

Louis@ATHENA:~$ bin/rcheck.sh
Reboot required.

Louis@ATHENA:~$ exec bash -l
Louis@ATHENA:~$ bin/rcheck.sh
Reboot required.

Louis@ATHENA:~$ exit

Louis@ATHENA:~$ bin/rcheck.sh
Reboot not necessary.
Louis@ATHENA:~$
Run Code Online (Sandbox Code Playgroud)

  • 这不再起作用了。 (6认同)
  • 这就是为什么我说“再”。这个帖子已经过时的信息很重要,所以现在有问题的其他人不需要尝试发现它不起作用。我不确定这里是如何处理的,但在 Stackoverflow 上,答案不仅应该帮助提出问题的人,还应该帮助所有其他正在为同一问题寻找解决方案的人。 (3认同)

小智 6

以下允许使用命令wslreboot(或任何自定义命令)从 WSL2 内关闭 。

从技术上讲wslshutdown更适合以下代码:

创建别名:

sudo nano ~/.bash_aliases
Run Code Online (Sandbox Code Playgroud)

添加行:

alias wslreboot='history -a && cmd.exe /C wsl --shutdown'
Run Code Online (Sandbox Code Playgroud)

history -a 确保我们在关机前保存了 bash 命令历史记录。

启用别名:

重启 WSL

cmd.exe /C wsl --shutdown
Run Code Online (Sandbox Code Playgroud)

或输入

source .bash_aliases
Run Code Online (Sandbox Code Playgroud)

现在你可以输入

wslreboot  
Run Code Online (Sandbox Code Playgroud)

去关机


我认为您可以使用上述变体来运行带有以下行的批处理文件:

wsl --shutdown
wsl
Run Code Online (Sandbox Code Playgroud)

以正确重启。