前提
javaを実行するのは、Unix環境です。
実現したいこと
javaの処理でシェルスクリプトを実行して、javaプロセスを再起動させたいです。
再起動は、起動で完了する必要があります。
プロセスが停止するとそのあと行いたい起動処理が中断されます。
Java処理AからJavaAプロセスを再起動するシェルスクリプトを実行したい。
Java処理AからJavaBプロセスを再起動するシェルスクリプトを実行したいではないです。
発生している問題・エラーメッセージ
シェルスクリプトで行うjavaのプロセス再起動時にプロセスが停止されると後続の処理も中断される。起動処理が中断されている。
シェルスクリプト実行は下記リンク先を参考。
https://takami-hiroki.hatenablog.com/entry/20101221/p1
該当のソースコード
Java
1public static void main(String[] args) { 2 try { 3 Runtime runtime = Runtime.getRuntime(); 4 Process p = runtime.exec("sh test.sh"); 5 //Process p = runtime.exec("sh test.sh &"); 6 //p.waitFor(); 7 } catch (IOException ex) { 8 } 9}
test.sh
1kill [JavaプロセスID] 2 3while true 4do 5 result=`pidin | grep java_process` 6 echo ${#result} 7 if [ ${#result} -eq 0]; then 8 break 9 fi 10 sleep 1 11done 12 13sh test_open.sh #このファイルはjavaのプロセスを起動する物です。この内容は秘密になっています。申し訳ありません。
試したこと
バックグラウンド処理とp.waitFor();を外しても同じ結果でした。
補足情報(FW/ツールのバージョンなど)
Javaのバージョン 8
回答2件
あなたの回答
tips
プレビュー