1

我可以通过以下方式在 unix 上启动持久进程:

nohup process &

在我关闭我的 bash 会话后,它将继续运行。我似乎无法对 Windows 上的 PowerShell 远程处理做同样的事情。我可以打开与服务器的 PSRemote 会话并启动一个进程,但是一旦我关闭该会话,它就会死掉。我的假设是这是强沙盒的好处,但这是我宁愿以某种方式解决的好处。有任何想法吗?

到目前为止,我已经尝试过:

$exe ='d:\procdump.exe'
$processArgs = '-ma -e -t -n 3 -accepteula w3wp.exe d:\Dumps'
1) [System.Diagnostics.Process]::Start($exe,$processArgs)
2) Start-Job -ScriptBlock {param($exe,$processArgs) [System.Diagnostics.Process]::Start($exe,$processArgs)} -ArgumentList ($exe,$processArgs)
3) start powershell {param($exe ='d:\procdump.exe', $processArgs = '-ma -e -t -n 3 -accepteula w3wp.exe d:\Dumps') [System.Diagnostics.Process]::Start($exe,$processArgs)}
4) start powershell {param($exe ='d:\procdump.exe', $processArgs = '-ma -e -t -n 3 -accepteula w3wp.exe d:\Dumps') Start-Job -ScriptBlock {param($exe,$processArgs) [System.Diagnostics.Process]::Start($exe,$processArgs)} -ArgumentList ($exe,$processArgs)}

该程序一直运行,直到我关闭会话,然后收割 procdump。procdump 最酷的地方在于它会自行终止,我想让它继续运行以利用这一事实。

我一直在远程启动 ADPlus,保持会话打开,然后终止会话以终止捕获。这有点方便,但它需要大量的轮询、检查和决定什么时候是在填满硬盘驱动器之前终止捕获过程的正确时机,但在捕获足够多的转储之后才能使用。我可以让 procdump 在等待适当的触发器时无限期地运行,当它捕获到足够的数据时,它就会死掉。这是可爱的。

在我终止远程会话后,我只需要让 procdump 继续运行。创建一个 procdump 计划任务并启动它可能不值得,但这是我剩下的最后一个想法。

谢谢。

4

1 回答 1

0

这是直接不可能的。间接地,是的,可以远程创建和启动任务或服务,但不能简单地将进程推入 SYSTEM 空间。

我通过生成本地作业来启动远程作业并在所需的时间段内保持活动状态来解决我的问题。本地作业保持远程会话打开,然后在适当的时间终止,如果我碰巧关心,本地父进程能够继续不间断地运行并使用 ReceiveJob 获取远程 procdump 的返回值。

于 2013-01-17T21:42:14.413 回答