Bash スクリプトを続行する前に、ssh によるスクリプトの実行が完了するまで待ちます。

Bash スクリプトを続行する前に、ssh によるスクリプトの実行が完了するまで待ちます。

次のスクリプトがあります。

command1
command2
ssh login@machine_with_lots_of_ram:~/script_that_needs_ram.sh
command4 output_file_from_above

コマンド 4 には ssh コマンドの出力が必要です。

続行する前に、sshスクリプトが完了するのを待つようにプログラムにどのように指示しますか?または、コマンド1の後にリモートシステムで実行するようにsshスクリプトを設定し、完了するまでプログラムがコマンド4を実行しないようにするにはどうすればよいですか。

ベストアンサー1

リモートサーバーでコマンド(スクリプト)の実行が完了するまで、SSHセッションは終了しません。

スクリプトがデータをサーバー上のファイルに出力するのか標準出力に出力するのかに応じて、2つのうちの1つを実行できます。

  1. データをサーバー上のファイルに出力する場合:

    ssh user@host script.sh
    scp user@host:remote_output local_output
    process_output local_output
    

    これは、scpデフォルトでサーバーからローカルコンピュータにデータをコピーするために使用されます。

  2. データを標準出力として印刷する場合:

    ssh user@host script.sh >local_output
    process_output local_output
    

    これにより、スクリプトの標準出力がローカルファイルにリダイレクトされます。

インストーラが最初に実行され、待機します。

ssh user@host script.sh &

# do other stuff

wait
scp user@host:remote_output local_output
process_output local_output

または

ssh user@host script.sh >local_output &

# do other stuff

wait
process_output local_output

コマンド(バックグラウンドプロセスとして実行中)が終了するwaitまでスクリプトを一時停止します。ssh

おすすめ記事