bashスクリプトXが別のbashスクリプトYから呼び出されているとします。ローカルコンピュータでスクリプトXを直接実行すると、Xが完了した後にプログラムが端末に終了します。
ただし、SSH経由でリモートでスクリプトYを実行すると、Xが完了した後(リモート)端末が「停止」し、exit
Xの末尾にコマンドが含まれていても終了しません。
付属のスクリプト呼び出しを完了した後にスクリプトYを終了したり、SSHを介して実行したときに次のコマンドを続行するにはどうすればよいですか?
//scriptY.sh
#!/bin/bash
...
ssh -i $ssh_key $user@$host source $dir/scriptX.sh
//scriptX completes fine on SSHed machine, but remote machine hangs here
...
編集する:
役に立つかもしれないもう一つの詳細です。奥には何かもっと深いものがあります。これexec
コマンドを含む呼び出されるスクリプト。
答え1
これは、おそらくスクリプトがtge端末を開いたままにしているものをバックグラウンドで(&を使用して)実行していることを意味します。スクリプトが終了すると、何かが実行され続けます。 sshはこれを検出し、何かが終了するまでセッションを閉じません。
必要なタスクを実行するスクリプトを取得するには、スクリプトを公開する必要があります。