我有一个看起来像这样的脚本:
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直到它完成?
解决方法:
在远程服务器上执行命令(脚本)之前,SSH会话不会退出.
根据脚本是将数据输出到服务器上的文件还是将数据输出到标准输出,您可以执行以下两种操作之一.
>如果它将数据输出到服务器上的文件:
ssh user@host script.sh
scp user@host:remote_output local_output
process_output local_output
这基本上使用scp将数据从服务器复制到本地计算机.
>如果它将数据输出到标准输出:
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
等待将暂停脚本,直到ssh命令(作为后台进程运行)退出.
标签:bash,linux,ssh
来源: https://codeday.me/bug/20190813/1647681.html