如何从命令行限制 Java 应用程序的最大执行时间
从命令行执行java应用程序时如何限制最大执行时间,如下所示:
java -Xmx10G -cp /weka/weka.jar weka.classifiers.trees.J48 -t /test/test-vector.arff -d /test/test.model
How do I limit the maximum execution time when executing a java app from command line, like this:
java -Xmx10G -cp /weka/weka.jar weka.classifiers.trees.J48 -t
/test/test-vector.arff -d /test/test.model
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不相信 Java 中内置了任何东西可以为你做这件事。选项:
作为后者的示例,在类 Unix 系统上的 bash 中,您可以使用
ulimit -t [秒]
在开始进程之前。编辑:正如评论中所指出的,目前尚不清楚这样的 ulimit 关闭有多优雅 - 线程是否会以足够礼貌的方式被终止以允许finally块执行等。这可能是值得测试的东西。
编辑:再次根据评论,ulimit 限制 CPU 时间,而不是总挂机时间。这可能是也可能不是您所追求的 - 这取决于您的进程是否受 CPU 限制。
I don't believe there's anything built into Java to do this for you. Options:
As an example of the latter, in bash on Unix-like systems you could use
ulimit -t [seconds]
before starting the process.EDIT: As noted in comments, it's not clear how graceful such a shutdown with ulimit would be - whether the threads would be killed in a sufficiently polite way to allow finally blocks to execute etc. That's probably something worth testing out.
EDIT: Again as per comments, ulimit limits the CPU time, not the overall wall time. This may or may not be what you're after - it depends if your process is CPU-bound.
那么,您可以使用 Java 的调度程序让它在一定时间后关闭应用程序:
http://download.oracle.com/javase/1,5.0/docs/api/java/util/Timer.html
Well, you can user Java's scheduler to have it shut down the application after a certain time:
http://download.oracle.com/javase/1,5.0/docs/api/java/util/Timer.html