后台java进程没有退出

时间:2010-01-20 14:58:09

标签: java linux process background

我正在使用java what.ever.Class &在后​​台启动一个java程序。它在第一行引发异常并打印出堆栈。

我希望java进程在那时退出,但由于某种原因,它会一直等待(没有代码运行,没有生成线程等)。它不是僵尸,因为它在第一个SIGTERM上正常退出。可能是什么原因不能立即退出?

添加了:

实际上每次都不会发生这种情况。如果我从命令行运行命令 - 它退出就好了。如果从脚本运行相同的命令(脚本只是#!/bin/sh / java what.ever.Class &),那么它将保留在后台。

nohup和重定向不起作用。

使用Debian,OpenJDK运行时环境(IcedTea6 1.6.1)(6b16-1.6.1-2)/ OpenJDK 64位服务器VM(内置14.0-b16,混合模式)。 sh实际上是破折号。

1 个答案:

答案 0 :(得分:1)

您可以检查它是否处于停止状态,等待输入或输出?

如果是,请尝试重新定向输入,输出和错误,如果您不需要它们:

java what.ever.Class </dev/null &>/dev/null &

或在需要时输入文件:

java what.ever.Class </dev/null &>outputfile &

或通过nohup,如果您需要输出并希望进程在您注销后继续运行:

nohup java what.ever.Class </dev/null &