这是指
matter stated here,我也遇到了同样的情况.
在我的一台服务器中,我运行了一个rsync,将一个巨大的目录(大小超过300 Gb)备份到安装在同一台机器上的另一个磁盘上. rsynced目录包含数千个目录和文件.我用’nohup’发出了一个rsync命令,然后使用’&’在后台推送它命令.远程bash shell上给出的完整命令(使用putty)是:
nohup rsync -avh /some/local/dir /backup/ >> /opt/rsync.dec22.log &
然后,为了检查复制数据的速率,我使用了’iotop’命令,发现有3个rsync运行相同的参数.在搜索时我发现上面的链接说它是正常的.
但是做一个iotop只监视系统上运行的那些和唯一的rsync进程,我看到一个进程正在读取文件,一个正在编写它们,但一个是空闲的.行为似乎很好,因为一个进程一次只做一件事,但是第三个进程在做什么(在下图中看作中间进程)?
我用过的iotop命令是:
iotop -p22250 -p22251 -p22252
以下是iotop命令输出的屏幕截图:
我问这个原因我经常使用rsync,并希望了解它的行为以获得长期利益.我甚至阅读了手册,但它没有提到分叉.
解决方法
rsync是一个旨在成为客户端和服务器的程序.服务器读取并且客户端写入.想象一下,不是一台计算机,而是计算机通过网络,我相信如果你这么想就会更清楚.
然后是控制器.由于IO操作往往带来一定的风险,因此IO问题不应导致完全阻塞或崩溃.因此,它为每个连接创建一个fork并位于后台.