Runtime.getRuntime().exec
Javaで使用してLinuxターミナルでshファイルを呼び出す方法は?
Javaコードから新しい端末でshファイルを呼び出したいです。ターミナルでのみ実行すると、別のプロセスとして実行され、プログラムが終了しても閉じられません。を使用していないのはそのためですProcessBuilder
。これは、それを使用しているプログラムが終了すると、それによって呼び出されたプロセスを停止します。
Runtime.getRuntime().exec
Javaで使用してLinuxターミナルでshファイルを呼び出す方法は?
Javaコードから新しい端末でshファイルを呼び出したいです。ターミナルでのみ実行すると、別のプロセスとして実行され、プログラムが終了しても閉じられません。を使用していないのはそのためですProcessBuilder
。これは、それを使用しているプログラムが終了すると、それによって呼び出されたプロセスを停止します。
スクリプトが実行可能 ( ) としてマークされている場合chmod +x script.sh
は、 で呼び出すことができますexec("./script.sh")
。それ以外の場合は、 を使用して直接呼び出すことができますexec("sh script.sh")
。
ProcessBuilder
は の単なる薄いラッパーであるためRuntime
、直接使用しても目的は達成されません。
代わりに、ターミナル ウィンドウをバックグラウンド プロセスとして作成し、このプロセスを切り離す 2 つ目のスクリプトを作成する必要があります。一般的方法:
ProcessBuilder
外部スクリプトを開始するnohup
新しい X 端末と Java プロセスの間の接続を切断します。&
すべてをバックグラウンドに送信するため、コマンドは終了するまで送信されませんxterm
。
使用する:
Runtime.getRuntime().exec(new String[] { "/bin/bash", "-c", "sh myfile.sh" });