gpt4 book ai didi

windows - 在 PowerShell 中启动一个分离的后台进程

转载 作者:可可西里 更新时间:2023-11-01 12:27:04 25 4
gpt4 key购买 nike

我有一个 Java 程序,我想从 PowerShell 脚本将其作为后台进程启动,类似于守护进程在 Linux 上的运行方式。 PowerShell 脚本需要做几件事:

  1. 在后台将程序作为独立的分离进程运行,这意味着父窗口可以关闭,进程继续运行。
  2. 将程序的标准输出和标准错误重定向到文件。
  3. 将后台进程的 PID 保存到一个文件中,以便稍后可以由另一个脚本终止。

我在 Linux 上有一个 shell 脚本,它像这样启动程序:

$ java -jar MyProgram.jar >console.out 2>console.err &

我希望使用 PowerShell 脚本在 Windows 上复制相同的行为。我已尝试将 Start-Process 与各种选项组合使用,以及创建 System.Diagnostics.ProcessStartInfoSystem.Diagnostics.Process 对象,但到目前为止我没有任何运气。 PowerShell 将程序作为后台进程启动,但当启动 PowerShell session 的 DOS 窗口关闭时,程序突然终止。我希望它在后台启动并独立于启动它的命令窗口。

输出重定向也很麻烦,因为似乎只能在同一窗口中运行的进程中重定向输出流和错误流(例如,使用 -NoNewWindow)。

这种事情在 PowerShell 中可能吗?

最佳答案

使用jobs为此:

Start-Job -ScriptBlock {
& java -jar MyProgram.jar >console.out 2>console.err
}

另一个选项是 Start-Process :

Start-Process java -ArgumentList '-jar', 'MyProgram.jar' `
-RedirectStandardOutput '.\console.out' -RedirectStandardError '.\console.err'

关于windows - 在 PowerShell 中启动一个分离的后台进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25023458/

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