Javaプログラムが終了したときに自動的に再起動するにはどうすればよいですか?

Javaプログラムが終了したときに自動的に再起動するにはどうすればよいですか?

以下のようにLinuxシステム(machineA)で実行可能なjarを実行しています。 15分ごとに電子メールを送信する実行可能なJarにJavaプログラムがあります。

/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar abc.jar config.properties &

上記のタスクを開始すると、abc.jarバックグラウンドで実行され、15分ごとに電子メールを送信し続けるクラスがあります。私のJavaプログラムでSchedulerを使用していますが、これは15分ごとに目を覚まして私に電子メールを送信するスレッドです。

今、すべてがうまくいきます。machineA何らかの理由で再起動するか、何らかの理由で終了すると仮定すると、バックグラウンドで自動的に再起動するabc.jar方法を探しています。abc.jar

だから私はUbuntu 12.04を実行しているので、Ubunutuの起動機能を使用することにしました。ここに設定ファイルがあります。

#/etc/init/testlnp.conf

#sudo start testlnp
#sudo stop testlnp

start on runlevel [2345]
stop on runlevel [016]

chdir /export/home/david/tester
respawn

post-stop script
  sleep 30
end script

limit nofile 8092 8092
setuid david
exec /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar abc.jar config.properties &

私のabc.jarファイルはこのディレクトリにあります/export/home/david/tester。これでJavaプログラムを起動しました。

sudo start testlnp

すべてが順調に始まり、ps aux | grep java看破できました-

david@machineA:~$ ps aux | grep java
david 130691 38.5  0.0 33906208 58636 ?      Sl   19:24   0:01 /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar abc.jar config.properties
david   131029  0.0  0.0   8100   936 pts/2    S+   19:24   0:00 grep --color=auto java

しばらくして、ps aux | grep javaもう一度これを実行してこの結果を確認しました。これはabc.jar私のプログラムのインスタンスが複数あることを意味しますか?なぜこれが起こるのか理解できませんか?

david@slc4b03c-8ixd:~$ ps aux | grep java
david   1746  4.5  0.0 33906208 57808 ?      Sl   19:25   0:01 /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar abc.jar config.properties
david   2143 73.0  0.0 33906208 57992 ?      Sl   19:25   0:01 /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar abc.jar config.properties
david     2180  0.0  0.0   8100   936 pts/2    S+   19:25   0:00 grep --color=auto java
david 130691  2.5  0.0 33906208 57492 ?      Sl   19:24   0:01 /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar abc.jar config.properties

私の主な目標は、私のコンピュータが再起動した場合、または何らかの理由でabc.jarが終了した場合にabc.jarを再起動することです。どうやってこれを達成できますか?私はスタートアップに何か間違っているのだろうか?

直す:-

これが私が受け取ったPPIDです。

david@machineA:~$ ps aux | grep java
david  18454  4.5  0.0 33906208 57520 ?      Sl   20:01   0:01 /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar abc.jar config.properties
david  18692 27.3  0.0 33906208 57788 ?      Sl   20:01   0:01 /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar abc.jar config.properties
david    18779  0.0  0.0   8096   940 pts/2    S+   20:02   0:00 grep --color=auto java


david@machineA:~$ ps  xao pid,ppid,pgid,sid,comm | grep java
 18454      1  18453  18453 java
 18692      1  18691  18691 java

ベストアンサー1

&アンパサンドなしでexecラインだけが必要です。

おすすめ記事