我有一个korn 88 shell脚本,它使用以下命令在远程主机上创建一个文件夹:
ssh $user@$host "mkdir -p $somedir" 2>> $Log
然后使用此
在循环中传输一堆文件scp -o keepalive=yes $somedir/$file $user@$host:$somedir
我想知道在脚本结束后第一个命令是否会打开连接?
答案 0 :(得分:3)
每个命令都会打开和关闭自己的连接。使用像tcpdump
这样的工具来验证这一点很容易。
这是因为用于终止进程的exit()
系统调用会关闭所有打开的文件描述符,包括套接字文件描述符。关闭套接字会关闭套接字后面的连接。
答案 1 :(得分:3)
足够新版本的ssh能够通过单个物理连接复用多个虚拟连接。所以你可以做的是在后台启动一些长时间运行的ssh命令并启用连接多路复用,然后后续连接将以更快的启动时间重新使用该连接。有关连接多路复用的信息,请参阅ssh_config
的联机帮助页,相关选项为ControlMaster
和ControlPath
。
但正如William Pursell所说,rsync
可能更容易,更快,如果它是一个选项。