2012-03-29 6 views
1

を使用してJavaアプリケーションを停止する方法、スクリプトは次のとおりです。私は(瓶の下で)Javaアプリケーションを起動するのopenSUSE Linuxで実行されるシェルスクリプトを、持っているシェルスクリプト

#!/bin/sh 

#export JAVA_HOME=/usr/local/java 
#PATH=/usr/local/java/bin:${PATH} 

#---------------------------------# 
# dynamically build the classpath # 
#---------------------------------# 
THE_CLASSPATH= 
for i in `ls ./lib/*.jar` 
do 
    THE_CLASSPATH=${THE_CLASSPATH}:${i} 
done 

#---------------------------# 
# run the application # 
#---------------------------# 
java -server -Xms512M -Xmx1G -cp ".:${THE_CLASSPATH}" com.package.MyApp > myApp.out 2>&0 & 

このスクリプトうまくいきます。

私が望むのは、このアプリを優しく殺すためのスクリプトを書くことです。これは、Linux killコマンドの-15引数で私を殺すことができるものです。

問題は、このサーバー上で実行されている多くのJavaアプリケーションがあることです。そのため、特にこのアプリケーションを強制終了する必要があります。

助けが必要ですか?事前に

おかげで、

フェルナンド

+0

あなたの質問に注意していますが、/ジャーにあなたのアプリを入れて、ちょうどそのマニフェストファイル内の相対パスでライブラリのすべてを言及する必要がありますすることができます。参照:http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html – Dave

答えて

2

はどこかに便利なバックグラウンドにアプリのPIDを書きます。

echo $! > /var/lib/MyApp.pid 

他のスクリプトでそのPIDを強制終了します。

+0

ありがとう@ ignacio-vazquez-abrams、答えの残りはここに見つかりました: http://stackoverflow.com//8884480/start-and-kill-java-app-with-shell-script-debian –

3

ストアファイル内のプロセスID:

java ...blabla... & 
echo $! > MyApp.pid 

次にあなたがkill -TERM $(cat MyApp.pid)でJVMを殺すことができます。

また、システム上のjavaプロセスをjpsと表示することもできます。これは、アプリケーションを起動するために使用されるプロセスIDとメインクラスまたはjarファイルをリストします。おそらくアプリケーションを認識するのに十分です。たとえば、次のように

$ jps 
20168 MyAPp 
20186 Jps 
$ kill -TERM 20168 

jpsの詳細情報:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jps.html

+0

ありがとう@Joni Salonen、しかし私はjpsを使うことはできません。しかし、それはとても役に立ちました。 –

0

あなたがps xaを使用する場合は、あなたがそれを起動するために使用され、完全なコマンドを含むプロセスを実行しているのリストを取得することができます。あなたが言及したような一時ファイルを使用したくない場合は、javaとあなたのクラスまたはjarの名前をgrepすることができます。

ps xa | grep java | grep com.package.MyApp | xargs kill -15 
関連する問題