不关闭ssh

时间:2012-05-29 18:56:04

标签: shell unix ssh

我有一个korn 88 shell脚本,它使用以下命令在远程主机上创建一个文件夹:

ssh $user@$host "mkdir -p $somedir" 2>> $Log

然后使用此

在循环中传输一堆文件
scp -o keepalive=yes $somedir/$file $user@$host:$somedir

我想知道在脚本结束后第一个命令是否会打开连接?

2 个答案:

答案 0 :(得分:3)

每个命令都会打开和关闭自己的连接。使用像tcpdump这样的工具来验证这一点很容易。

这是因为用于终止进程的exit()系统调用会关闭所有打开的文件描述符,包括套接字文件描述符。关闭套接字会关闭套接字后面的连接。

答案 1 :(得分:3)

足够新版本的ssh能够通过单个物理连接复用多个虚拟连接。所以你可以做的是在后台启动一些长时间运行的ssh命令并启用连接多路复用,然后后续连接将以更快的启动时间重新使用该连接。有关连接多路复用的信息,请参阅ssh_config的联机帮助页,相关选项为ControlMasterControlPath

但正如William Pursell所说,rsync可能更容易,更快,如果它是一个选项。