2

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

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

然后使用这个循环传输一堆文件

scp -o keepalive=yes $somedir/$file $user@$host:$somedir

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

4

2 回答 2

3

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

但正如 William Pursell 所建议的那样rsync,如果可以选择的话,它可能更容易、更快捷。

于 2012-05-29T19:20:32.923 回答
3

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

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

于 2012-05-29T19:00:00.050 回答