为什么rsync自行分岔? 为什么一个这样的分支过程几乎是闲置的(如iotop所见)?

这是指在这里陈述的事情 ,我也遇到了同样的情况。

在我的一台服务器上,我运行了一个rsync,把一个巨大的目录(大于300Gb)备份到安装在同一台机器上的另一个磁盘上。 rsynced的目录包含数千个目录和文件。 我发出了一个单一的rsync命令,'nohup',然后使用'&'命令在后台推送它。 在远程bash shell(使用putty)上给出的完整命令是:

nohup rsync -avh /some/local/dir /backup/ >> /opt/rsync.dec22.log & 

然后,为了检查被复制的数据是什么速率,我使用了'iotop'命令,发现有3个rsync运行的参数是相同的。 在search时,我发现上面的链接说这是正常的。

但是做一个iotop只监视系统上运行的那些和唯一的rsync进程,我发现一个进程正在读文件,一个正在写它们,但是一个进程正在闲置。 行为似乎是好的,因为一个进程一次只做一件事,但第三个进程在做什么(在下面的图像中被看作是中间那个)?

我用过的iotop命令是:

 iotop -p22250 -p22251 -p22252 

以下是iotop命令输出的屏幕截图:

显示3个rsync进程的iotop命令输出

我问这个原因,我使用rsync很多,并希望了解它的行为,以获得长期利益。 我甚至读过这本手册,但没有提到分叉。

rsync是一个被devise成客户端和服务器的程序。 服务器读取和客户端写入。 想象一下,不是一台计算机,而是通过networking连接了计算机,我相信如果你这样想的话,它会更加清晰。

然后是控制器。 由于IO操作往往带有一定的风险,IO问题不应该导致完全阻塞或崩溃。 所以,它为每个连接创build一个分支,并坐在后台。