如何在 power shell 中将已经运行的进程发送到后台?

如何在 power shell 中将已经运行的进程发送到后台?

在 bash 中,可以通过按下 Control Z 键来暂停已经在前台运行的进程。然后,您可以使用 将其带回前台,fg或使用 让其继续在后台运行bg

有没有办法用 power shell 来做到这一点?这个问题询问有关尚未启动的进程的问题,但我想知道已在运行的进程的答案。

答案1

简短回答:否

但还是有希望的:https://github.com/PowerShell/PowerShell/issues/3229

答案2

如果您直接启动命令则不能。

你可以这样做(是的,这是一个丑陋的伎俩):

  • 使用以下命令在后台启动命令: Start-Job -ScriptBlock { <your_command> }
  • 然后将其拉到前台Receive-Job -Wait -Id <your_job_id>

现在你的工作已经处于前台。

  • 如果你想把它放在后台,请输入Ctrl-c
  • 如果要再次将其置于前台,请再次输入:Receive-Job -Wait -Id <your_job_id>

答案3

您可以使用 PowerShell 作业 cmdlet 来实现您的目标。

PowerShell 中有 6 个与作业相关的 cmdlet。

  • 找工作
    • 获取当前会话中运行的 Windows PowerShell 后台作业
  • 接收工作
    • 获取当前会话中 Windows PowerShell 后台作业的结果
  • 删除作业
    • 删除 Windows PowerShell 后台作业
  • 开始工作
    • 启动 Windows PowerShell 后台作业
  • 停止工作
    • 停止 Windows PowerShell 后台作业
  • 等待工作
    • 禁止显示命令提示符,直到会话中运行的一个或所有 Windows PowerShell 后台作业完成为止

如果你对此感兴趣,你可以下载示例如何在 PowerShell 中创建后台作业

相关内容