sshj 経由でシェル スクリプトを実行し、スクリプトが完了するのを待たずに切断する必要があります。スクリプトが完了するまでに時間がかかる場合があるため、追加の Java コードを作成して、スクリプトからの結果を定期的にチェックします。シェルスクリプトが完了するのを待たずに sshj セッションを切断するにはどうすればよいですか?
1080 次
1 に答える
2
コマンドを で終了します&
。例:
nohup /usr/bin/longRunningProcess &
そのコマンドがサブミットされると (たとえば、コマンドをサブミットしてから を呼び出すCommand.join()
)、切断できlongRunningProcess
、バックグラウンドで続行されます。もう 1 つ気になる点は、コマンドの出力です。のファイルなど、他の場所stdout
にリダイレクトする必要があります。したがって、コマンドは次のようになります。stderr
/dev/null
nohup /usr/bin/longRunningProcess > /dev/null 2>&1 &
Java コードは次のようになります。
SSHClient client = ...
Session session = ...
Command command = session.exec(yourCommand);
// Wait for command to be submitted
command.join();
// Do some error checking by checking command.getExitStatus()
...
// Disconnect
session.close();
client.close();
于 2014-01-09T20:59:29.690 に答える