【发布时间】:2009-11-19 10:41:33
【问题描述】:
我正在运行我使用过线程的 java 应用程序... 我正在终端上使用 ant 命令运行此应用程序.. 但是当我关闭终端或按 ctrl+c 时,正在运行的 java 程序停止... 请帮我解决这个问题,因为我想连续运行这个程序......
【问题讨论】:
标签: java linux ant multithreading terminal
我正在运行我使用过线程的 java 应用程序... 我正在终端上使用 ant 命令运行此应用程序.. 但是当我关闭终端或按 ctrl+c 时,正在运行的 java 程序停止... 请帮我解决这个问题,因为我想连续运行这个程序......
【问题讨论】:
标签: java linux ant multithreading terminal
如果您终止 Java 进程,Java 将不再运行。如果您希望线程持续运行,Java 程序必须保持活动状态。
用 ant 调用这样的程序通常不是这样做的方法。在类 Unix 系统上,您通常会通过 /etc/init.d 启动脚本在后台运行这样的程序。在 Windows 中,相当于将您的程序作为服务启动,尽管我不确定让 Java 以这种方式运行所涉及的复杂性。
如果您从控制台运行某些东西 - 不杀死它并最小化控制台怎么样?如果您是从 Linux(或 Cygwin)启动它,只需在命令行末尾附加 & 即可,该进程将在后台运行。
告诉我们更多关于您的环境,以及您准备忍受哪些妥协(例如,在任务栏中有一个最小化的控制台窗口),我们可以为您提供更多帮助。目前,我能给出的唯一确定的答案是“是的 - Ctrl-C 会杀死你的程序(如预期的那样)。如果你想让它继续运行,不要告诉它停止运行。” :-)
【讨论】:
查看适用于 Linux 的 screen 命令。
【讨论】:
我猜这是期望的行为。如果您终止您的应用程序,它会被关闭。
如果您希望在后台运行应用程序,您应该考虑将其设为 Windows 服务或守护进程。
如果您希望继续在 *nix 上将其作为应用程序运行,您可以考虑使用GNU Screen。
【讨论】:
在后台运行 ant 命令并将其输出重定向到一个文件:
ant &> my.log &.
注意:这个问题似乎与线程无关(除非我误解了它)。
【讨论】:
听起来你想守护你的 ant 任务。我建议使用以下命令:
nohup ant &> ant.log < /dev/null &
nohup 将允许程序在您关闭终端后继续运行。
【讨论】:
我很惊讶没有人提到太有名的Java Service Wrapper。如果您正在开发长期运行的流程(即服务),这是一款出色的软件。
【讨论】: