3

私はubuntuマシンでデーモンJavaプロセスを実行しています:

java -cp (...) &> err.log&

プロセスはランダムな期間実行され、その後消えます。LOG、err.log、JVMクラッシュファイル(hs_err _ *。log)には何も作成されておらず、何もありません。私の2つの質問は:

1)どのような状況でJa​​vaプロセスが突然終了する可能性がありますか?

2)プロセスに何が起こったのかを知る方法はありますか(PIDを知っています)?UNIXは、終了したプロセスに関する情報を何らかの形で保持していますか?

4

3 に答える 3

3

1)どのような状況でJa​​vaプロセスが突然終了する可能性がありますか?

それがそれ自体で終了するとき、しかし私はあなたがそれを除外したか、それがSIGKILLで殺されたときだと思います。Linuxを使用している場合、これは非常に重要な問題になる可能性があります。システムメッセージログを見ましたか?

2)プロセスに何が起こったのかを知る方法はありますか(PIDを知っています)?

その情報を取得するためにいくつかのトレースツールを構成しない限り、通常はそうではありません

UNIXは、終了したプロセスに関する情報を何らかの形で保持していますか?

いいえ。ただし、使用しているUnixバリアントによっては、簡単に追加できる場合があります。あなたの例では、プロセスの終了ステータスを次のように出力するだけです。echo $?

の場合、それは265プロセスがシグナル9(=265-256)で強制終了されたことを意味します。

于 2012-04-21T15:03:33.550 に答える
0

JVMが終了したときにどういうわけか私に警告する簡単なシェルスクリプトを書きます。おそらく、JVMの終了コードを記載した電子メールを送信します。

#!/bin/sh

# Launch JVM and wait...
java -cp ...

# do something with the exit code $?
# log it to a file or mail it yourself

おそらく、終了コードが何かを明らかにするかもしれません。

于 2012-04-21T15:15:28.800 に答える
0

YAJSWを使用してデーモンとして実行します。これは、メモリなどを監視するいくつかの方法が可能で、再起動オプションがあり、ラッパープロセスでログを有効にして、問題が発生したときに多くの情報を入手できるようにするためです。

于 2012-04-21T16:25:47.083 に答える