如何检测Java中经过的进程时间(不包括进程休眠的时间)

如何检测Java中经过的进程时间(不包括进程休眠的时间),java,torque,apache-commons-exec,Java,Torque,Apache Commons Exec,我正在开发一个Java程序,该程序启动一个子进程,通过标准输出接收数据,并执行一些计算,这个过程会重复。我在一台超级计算机上运行这个程序,它使用一个与转矩相关的PBS,带有一些特殊的调度功能,可以周期性地暂停作业,从而最大限度地提高系统利用率 我在执行过程中遇到的一个问题是,我的子进程由于当前未知的原因而神秘地挂起,导致Java等待一个永远不会到达的响应。我想做的是监视这个进程并强制执行一个执行时间截止,也就是说,如果进程运行了一段不寻常的时间,就会死掉并抛出某种错误,让我知道发生了这种情况 通

我正在开发一个Java程序,该程序启动一个子进程,通过标准输出接收数据,并执行一些计算,这个过程会重复。我在一台超级计算机上运行这个程序,它使用一个与转矩相关的PBS,带有一些特殊的调度功能,可以周期性地暂停作业,从而最大限度地提高系统利用率

我在执行过程中遇到的一个问题是,我的子进程由于当前未知的原因而神秘地挂起,导致Java等待一个永远不会到达的响应。我想做的是监视这个进程并强制执行一个执行时间截止,也就是说,如果进程运行了一段不寻常的时间,就会死掉并抛出某种错误,让我知道发生了这种情况


通常,我会使用ApacheCommonsExec看门狗来完成这项工作。但我担心,如果该作业使用开始和结束系统之间的差值,则暂停该作业的任何时间都会导致中断。currentTimeMillis。ApacheCommons执行监管机构会遭受这种痛苦吗?是否有任何方法可以排除运行时间计算中的任何挂起时间?

如果Java正在生成子进程,那么Torque似乎只挂起Java进程,而不挂起子进程。这意味着子进程将连续运行,您可以使用普通的unix工具查询子进程的CPU时间与挂钟时间,不是吗?一个随机的想法,Java进程是否会丢失孩子退出的信号,因为它当时被转矩暂停?Sam,谢谢你的回答!我怀疑这起案件中的工作暂停有点复杂,尽管我对此不确定。我认为PBS不是一个股票标准的实现。。。在任何情况下,无论我是否正确,在谈到torque等的输入和输出时我都非常天真,也许我应该研究CPU与wall时间的标准unix方法。谢谢你的建议!查看以确保您允许所有可能导致子进程挂起的进程执行陷阱。很高兴提供帮助。很抱歉,我忽略了提到ps命令有一个用户时间和系统时间,可以在给定进程ID的情况下打印。这可能会有所帮助。祝你好运