如何在 PowerShell 中暂停和恢复 WSL1 进程?

如何在 PowerShell 中暂停和恢复 WSL1 进程?

ctrl在 bash 中,可以使用+暂停作业,z并使用 恢复作业fg。Windows Subsystem for Linux 1 (WSL1) 中的 Bash 也支持此功能。但是,PowerShell 本身不支持暂停作业,并且默认情况下无法与此功能很好地交互。

例如,如果我运行wsl -e vi,将打开一个 vi 编辑器。如果我随后按ctrl+ z,vi 将被暂停,但 PowerShell 将失去响应。它不会打印提示,也不会响应任何输入,直到暂停的进程被终止。显然,PowerShell 不知道如何处理暂停的进程。

如何让 PowerShell 在暂停其中的 WSL1 进程后做出响应,并在稍后恢复该进程?可能的解决方案包括更改 PowerShell 的配置,或包装 wsl 调用以拦截ctrl+z并模拟预期的行为。

答案1

下面介绍两种暂停 PowerShell 命令的方法。但是,它们不会像 Linux 下那样释放控制台。

方法 1:调试模式

在 PowerShell 控制台中,您可以通过进入调试模式来暂停当前正在执行的命令/脚本。

Ctrl+Pause进入调试模式。输入命令Continue继续执行。

方法 2:使用 Suspend-Job

当使用两个 PowerShell 控制台时,您可以给命令命名并附加-JobName参数,然后在另一个控制台中暂停发出该命令 Suspend-Job -Name myname

参考:

相关内容