次のコマンドを使用して、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を取得する必要があります。procdumpのスケジュールされたタスクを作成して開始することはおそらく価値がありませんが、それは私が残した最後のアイデアについてです。
ありがとう。