gpt4 book ai didi

bash - 从 WSL session 内部关闭或重新启动 WSL session

转载 作者:行者123 更新时间:2023-12-04 12:29:46 33 4
gpt4 key购买 nike

我希望能够重新启动 WSL session 。这样做有点尴尬,因为 WSL 不使用 systemd 所以我们不能使用 reboot .在 WSL session 中,我们可以运行任何 Windows 可执行文件:

boss@Asus: ~ $ wsl.exe -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
fedoraremix Stopped 1
Alpine Stopped 1
Ubuntu Stopped 1
因此,我们可以使用 wsl.exe (你必须确保在调用 Windows 命令时总是添加 .exe 否则它们将不起作用)关闭当前运行的 WSL session wsl.exe -t Ubuntu-20.03 ,但问题是我不知道 session 名称。
当我们在 WSL session 中时, hostname是不同的,所以我不知道如何找到我所在的当前正在运行的 session 的名称(也许是一个 Windows 进程命令,它告诉我我正在运行哪个进程??)。
理想情况下,我想要一个等同于重启的命令。我想这必须看起来像:
  • 运行一个异步命令,该命令将在 future 5-10 秒内启动一个新 session ,以允许前一个 session 完全关闭(并且不会在此 session 终止时终止)。
  • 使用 wsl.exe -t <my found name> 终止当前正在运行的 session .
  • 几秒钟后,新 session 将启动。
  • 最佳答案

    感谢上面的评论者。
    要从 WSL guest 中关闭 session ,您可以运行:

    wsl.exe --terminate $WSL_DISTRO_NAME
    重启 也是可能的,但是到目前为止我不知道如何获得一个新的终端 在同一个控制台窗口内 .以下将重新启动 WSL guest 并在完成后打开它的新控制台窗口:
    cd /mnt/c/ && cmd.exe /c start "rebooting WSL" cmd /c "timeout 5 && wsl -d $WSL_DISTRO_NAME" && wsl.exe --terminate $WSL_DISTRO_NAME
    说明 :
  • 从 Windows 的角度来看,WSL 系统是作为网络资源挂载的。 cmd不支持生成的 UNC 路径格式,例如 \\wsl$\Debian\<...> .因此最好是cd到它可以解析为 Windows 路径的目录,例如 C:\ ,在执行之前。如果省略,cmd 会报错并将其目录更改为 cmd%windir% .
  • &&在 linux 和 windows 中完成前一个命令后运行另一个命令 cmd .
  • cmd.exe /c开始 cmd实例并告诉它执行后面的命令。
  • start "<WindowTitle>" ...cmd -internal 命令在它自己的窗口内运行另一个程序,独立于 cmd实例。在这种情况下,程序是另一个 cmd window 。 WSL 关闭时不会受到影响。
  • 在最初的 Linux-Terminal 中,第一个 cmd /c命令已完成,&& 之后的第三个命令像上面一样关闭 guest 。
  • 第二个cmd窗口等待几秒钟,然后启动同一 WSL 机器的新 WSL session 。

  • 创建别名
    您可以通过创建别名使其更易于使用。对于 bash用户,请编辑您的 ~/.bashrc文件并在之后应用更改:
    nano ~/.bashrc && source ~/.bashrc
    在文件中的任意位置添加以下任一行或两行。
    你当然可以选择任何你想要的名字。两者 shutdownreboot作为 systemd 命令存在,但由于它们在 WSL 机器中不起作用,您可以使用别名替换它们,如下所示:
    alias shutdown='wsl.exe --terminate $WSL_DISTRO_NAME'
    alias reboot='cd /mnt/c/ && cmd.exe /c start "rebooting WSL" cmd /c "timeout 5 && wsl -d $WSL_DISTRO_NAME" && wsl.exe --terminate $WSL_DISTRO_NAME'

    关于bash - 从 WSL session 内部关闭或重新启动 WSL session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66375364/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com