2016-06-02 13 views
0

特定の制限時間内に単一のJVMを停止できるかどうかは疑問です。その制限時間内に停止していない場合は、シェルスクリプトからプロセスを終了します。制限時間内にWebSphere JVMを停止しますか?

我々は./stopServer.sh JVM_Nameを実行している場合 - JVMが停止または任意のエラー、終了まで取得することはできませんまで、それが実行されます。

私がしようとしていることは次のとおりです。./ stopServer.sh JVM_Name - これが2分以内に停止しない場合は、プロセスを終了します(ただし、シェルから2分以内に停止しないことを確認する方法プロセスが殺害に行く前のスクリプト)。私は殺すための条件を書くことができます。しかし、JVMが2分以内に停止したかどうかを確認する方法がわからないので、プロセスを強制終了することができます。

は、誰もが、JVMは、特定の制限時間内に停止されているかどうかを識別するためのシェルスクリプトコードを提案してくださいことはできますか?

+0

チェックイン時に使用されていないのいずれかであることを信頼してしまう殺す

test $? -eq 0 && kill $processid 

を続行します。http:// stackoverflow.com/a/4340058/5934435 – Sampada

+0

ここAIXを話す窓の質問だったようです@Sampada、... –

+0

そうそう。あなたは正しい@ステファンです。似たようなものがaixのために見つけられないことは確かです。 – Sampada

答えて

0

A JVMはプロセスであり、そのようにkillコマンドで停止することができます - あなたはjava ...ようなものを使用してスクリプトからJVMを起動した場合kill $processid以上残忍なkill -9 $processid

は、私が最後に&を置くことをお勧め

processid=$! 

バックグラウンドプロセスのIDを保存します。 次に

sleep 120 

は2分間待機します。 は今、次の2つのオプションを持っている - のいずれかだけで殺す

kill $processid /dev/null 2>&1 

または最初のチェックたprocessidは、(非常に低い)別のプロセスで再利用(またはあなたのJVMが終了している場合は、多分ファイルをチェックするためにいくつかの他の方法を使用する可能性がある場合これはあなたのJavaプログラムからこれを示しています)、それがマッチすればkillを使用します。

ps -ef|grep -w $processid |grep -w java > /dev/null 

それはその後、リターンコードゼロを持っている場合、私は通常、processidを私のJVMまたはこのすべて

+0

素晴らしい提案です。私は次の1時間で就任する予定です。 defintelyチェックを行います。 – RishuA

+0

私はあなたの提案を試みました。私は疑問に思った。 $!コマンドが実行された後にpidをキャプチャしています。バックグラウンドからキャプチャされたPIDが利用できず、新しいプロセス(孤児)が残っているとします。これはこの良い ./stopServer.sh JVM&>/somelocationをsituation.Is tackelする方法。 sleep 120; PID = 'ps -ef | grep $ JVM | grep -v grep | awk '{print $ 2}' '; もしあなたがあなたの望む実際のプロセスではないかもしれないと私はほとんど予想していたwebsphereタグから、[[""!= "$ PID"]] then kill -9 $ PID fi – RishuA

+0

殺すため。あなたのstopServer.shはJavaを生成し、2分後に終了しませんか?たぶん、中断する間にやるべきことがありますか?あなたはそれについてIBMの文書をチェックしましたか? –

関連する問題