这是指在这里陈述的事情 ,我也遇到了同样的情况。
在我的一台服务器上,我运行了一个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命令输出的屏幕截图:
我问这个原因,我使用rsync很多,并希望了解它的行为,以获得长期利益。 我甚至读过这本手册,但没有提到分叉。
rsync是一个被devise成客户端和服务器的程序。 服务器读取和客户端写入。 想象一下,不是一台计算机,而是通过networking连接了计算机,我相信如果你这样想的话,它会更加清晰。
然后是控制器。 由于IO操作往往带有一定的风险,IO问题不应该导致完全阻塞或崩溃。 所以,它为每个连接创build一个分支,并坐在后台。