如何从命令行限制 Java 应用程序的最大执行时间

发布于 2024-12-12 09:47:22 字数 182 浏览 0 评论 0原文

从命令行执行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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

泪是无色的血 2024-12-19 09:47:22

我不相信 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:

  • Write a wrapper class which launches the original class but also creates a timer thread to kill the current process if it hasn't finished in time.
  • Use the operating system capabilities

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.

素年丶 2024-12-19 09:47:22

那么,您可以使用 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文