私は、子プロセスを起動し、stdout を介してデータを受信し、計算を実行する Java プログラムに取り組んでおり、このプロセスが繰り返されます。このプログラムは、Torque 関連の PBS を使用するスーパーコンピューターで実行し、システムの使用率を最大化するために定期的にジョブを一時停止する特別なスケジューリング機能を備えています。
実行中に発生した問題の 1 つは、子プロセスが不可解にハングアップし (原因は現在不明)、Java が決して到着しない応答を待機するインスタンスでした。私がやりたいことは、このプロセスを監視し、実行時間のカットオフを強制することです。つまり、プロセスが異常な時間実行された場合、終了し、何らかのエラーをスローして、これが発生したことを知らせます。
通常、これを行うには Apache commons exec ウォッチドッグを使用します。しかし、このジョブが中断されている時間がこのカットオフに寄与するのではないかと心配しています (開始と終了の System.currentTimeMillis() の違いを使用すると仮定します)。Apache commons exec ウォッチドッグはこれに悩まされますか? 経過時間の計算で中断時間を除外する方法はありますか?