2015-09-03 56 views
1

我有一个从Ubuntu 14.04上的shell脚本运行的Java进程,该进程在没有任何可见的原因和没有日志的情况下崩溃。 Java程序使用Twitter的Userstream API。我一直在寻找/ var/log中的痕迹,但没有发现任何可以明确指出问题的东西。请告知如何处理这个问题,并找到任何有用的日志可能表明问题。 此外,这是我的Java版本:Linux上的Java进程崩溃(ubuntu 14.04)

Java version "1.8.0_60" 
Java(TM) SE Runtime Environment (build 1.8.0_60-b27) 
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode) 
+0

欢迎来到StackOverflow。请编辑您的问题并添加'java -version'的输出。此外,有关Java程序的信息可能会有所帮助。 – hiergiltdiestfu

+0

我编辑了这个问题。谢谢。 –

+0

我还发送*另一个*编辑来修复降价 –

回答

0

故障排除热点崩溃的第一步是要找到一个崩溃日志,或者叫致命错误日志。默认情况下,它们被命名为hs_err_pid%pid.log,其中%pid是崩溃虚拟机的进程ID,通常可以在进程启动的cwd中找到。所述日志的名称和位置也可以通过-XX:ErrorFile -VM参数来影响。例如:

-XX:ErrorFile=/var/log/java/java_error%pid.log

你可以找到更多关于崩溃日志本身的信息here

该日志的内容可以指示发生了什么,以及在哪里。做好准备,出现HotSpot崩溃的情况通常是而非由托管Java程序中的错误引起的。解释这些崩溃日志的详尽指南可以在这里找到here

如果在崩溃后没有找到这样的日志,那么虚拟机不会崩溃,而是正常终止。在这种情况下,远程调试会话可能是按顺序的。远程调试详述如下here,并且在SO上也有一些主题。

(还有非常遥远的机会,情况不允许日志写入,即在碰撞过程中没有可用的文件句柄。)

+0

hs_err_pid%pid.log文件不存在,但由于应用程序日志在中间停止,所以VM没有正常终止。操作系统是否可以由于某种原因而停止该过程,并且如何检查这是否真的发生了? –

+0

我看到你找到原因,恭喜!本来是一个重要的信息,当你注销时它总是崩溃;) – hiergiltdiestfu

+0

当然,如果我知道的话。我写了一个问题“......没有任何明显的原因崩溃......”。我后来发现了事故原因。感谢您的帮助:) –

0

的问题是,当我从服务器断开连接SSH我的进程终止。为了在后台运行的进程,防止进程终止时断开连接使用 'nohup的':

〜$ nohup的PROCESS_NAME &

我发现这个thread答案。