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之后立即执行./bash0.sh paramter1 parameter2 &and 然后退出 ssh 而不等待./bash0.sh完成。
我不能这样做ssh user@ip ./path/bash0.sh paramter1 paramter2,因为 bash 文件包含相对路径。

4

3 回答 3

0

简单的方法:

./bash1.sh && ssh user@ip pkill bash0.sh
于 2013-03-05T16:21:21.103 回答
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

找到了解决方案:

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 回答