.execとsshはJavaプロセスを中断します。

.execとsshはJavaプロセスを中断します。

編集する:私の考えの問題は、SSH接続がまだ開いている背景接続を作成していることです(参照:https://superuser.com/a/617670)。そのフラグを使用してsshを実行しますが、-fjavaがインストールされていることを確認する必要があります。スクリプト自体で接続を強制的に閉じる簡単な方法はありますか?

リモートコンピュータはUbuntu 14.04を実行しています。

私は次のようにJavaを呼び出すためにClojureで書かれたツールを使用していますRuntime.getRuntime().exec()

Runtime.getRuntime().exec("ssh", "-o", "StrictHostKeyChecking=no",
    "user@host", "sudo su -");`

次に、生成されたjava.lang.Processを介して標準入力を受け取り、ファイルの内容をここに記録します。デフォルトでは.flush作成者.closeです。すべてがうまくいきます。多くは問題なく発生しますが、最初は次のように実行されるスクリプトがあります。

if [ ! $(which java) ]; then
    apt-get update -q
    apt-get install -y openjdk-7-jre
fi

ノードに手動でSSHを接続すると、Javaが正常にインストールされ、プロセスが終了することがわかります。ただし、何らかの理由で、これは呼び出しコード(たとえば上記のJavaプロセス)には渡されません。

前述したように、これらはたくさんありますが、それらのどれも失敗しません。さまざまなタスクを実行するスクリプトがありますが、上記とほぼ同じタスクを実行する他のスクリプトもあります。唯一の違いは、他のソフトウェア(gitなど)をインストールして中断されないことです。

だから手動で試してみました。つまり、シェルに入り、次のように入力しました。

ssh -o StrictHostKeyChecking=no -o ubuntu@somehost sudo su -

その後、スクリプトを貼り付けると、すべてが正常です。

原因が何なのかよくわかりません。

ベストアンサー1

おすすめ記事