0

公開鍵(パスワードなし)を使用してサーバーにsshでログインしました。
これは、bash で自動化したいコマンドです。

ssh user@ip
cd path
./bash0.sh parameter1 paramter2 & <-- this is a loop and is working on remote server in background
exit <-- exit form ssh

./bash1.sh <-- starting local bash
ssh user@ip pkill bash0.sh <-- kill the process at the end of the bash1.sh. From terminal is ok, but from bash?

問題は、 のcd path直後に andを実行し、 が終了./bash0.sh paramter1 parameter2 &するのを待たずに ssh./bash0.shを終了することです。bashファイルに相対パスが含まれているため、
できません。ssh user@ip ./path/bash0.sh paramter1 paramter2

4

3 に答える 3

0

解決策を見つけました:

ssh user@ip "cd path && ./bash0.sh parameter1 paramter2" &
/bash1.sh <-- starting local bash
ssh user@ip pkill bash0.sh

「」は非常に重要です。

于 2013-03-06T09:34:45.970 に答える
0

セミコロンで区切ることで、ssh 経由で複数のコマンドを送信できます。

ssh user@ip "cd path;./bash0.sh parameter1 parameter2 & exit"

(exitは必要ありませんが、 の後にさらにコマンドを追加する方法を示すためだけに存在します&)

またssh user@ip pkill bash0.sh、bash スクリプトから動作するはずです。あなたの端末もおそらく単なるbashです。

編集: ,および演算子の詳細な説明については、http ://www.skorks.com/2010/05/executing-multiple-commands-a-bash-productivity-tip/ を参照してください。;&&&

于 2013-03-05T16:51:58.487 に答える
0

簡単なアプローチ:

./bash1.sh && ssh user@ip pkill bash0.sh
于 2013-03-05T16:21:21.103 に答える