Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 不关闭ssh_Shell_Unix_Ssh - Fatal编程技术网

Shell 不关闭ssh

Shell 不关闭ssh,shell,unix,ssh,Shell,Unix,Ssh,我有一个korn 88 shell脚本,它使用以下命令在远程主机上创建一个文件夹: ssh $user@$host "mkdir -p $somedir" 2>> $Log 然后用这个在循环中传输一堆文件 scp -o keepalive=yes $somedir/$file $user@$host:$somedir 我想知道第一个命令是否会在脚本结束后保持连接打开状态?每个命令都会打开和关闭自己的连接。使用像这样的工具来验证这一点很容易 这是用于终止进程的系统调用关闭所有打开的

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

ssh $user@$host "mkdir -p $somedir" 2>> $Log
然后用这个在循环中传输一堆文件

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

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

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


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

足够新的ssh版本能够在单个物理连接上多路传输多个虚拟连接。因此,您可以在后台启动一些长时间运行的ssh命令,并启用连接多路复用,然后后续连接将以更快的启动时间重新使用该连接。有关连接多路复用的信息,请参见
ssh\u config
的手册页,相关选项有
ControlMaster
ControlPath


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

它不会。您可以使用
ps
top
自己检查它。这意味着,如果我有10个文件要传输,我将在脚本执行期间打开和关闭10+1=11个连接。。。有没有更有效的方法来实现这一点?有许多方法可以在单个连接上复制一组文件。一个好的选择是(见威廉·珀塞尔的评论)。此外,scp还可以复制多个文件,请参阅。