我正在使用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实际上是破折号。
答案 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 &