如何从命令行限制Java App的最长执行时间

时间:2011-10-29 06:51:14

标签: java limit

如何从命令行执行java应用程序时限制最长执行时间,如下所示:

  

java -Xmx10G -cp /weka/weka.jar weka.classifiers.trees.J48 -t   /test/test-vector.arff -d /test/test.model

2 个答案:

答案 0 :(得分:4)

我不相信Java会为你做这件事。选项:

  • 编写一个启动原始类的包装类,但创建一个计时器线程,以便在当前进程没有及时完成时终止它。
  • 使用操作系统功能

作为后者的一个例子,在类Unix系统的bash中,你可以在开始这个过程之前使用ulimit -t [seconds]

编辑:正如评论中所指出的,目前尚不清楚这种关闭ulimit的优雅程度如何 - 是否会以足够礼貌的方式杀死线程以允许最终执行块等等。这可能是值得测试的东西。 / p>

编辑:再次根据评论,ulimit限制CPU时间,而不是整个墙上时间。这可能是也可能不是你所追求的 - 这取决于你的进程是否受CPU限制。

答案 1 :(得分:2)

好吧,您可以使用Java的调度程序让它在一段时间后关闭应用程序:

http://download.oracle.com/javase/1,5.0/docs/api/java/util/Timer.html