3

sshj 経由でシェル スクリプトを実行し、スクリプトが完了するのを待たずに切断する必要があります。スクリプトが完了するまでに時間がかかる場合があるため、追加の Java コードを作成して、スクリプトからの結果を定期的にチェックします。シェルスクリプトが完了するのを待たずに sshj セッションを切断するにはどうすればよいですか?

4

1 に答える 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 に答える