这是指这里所说的事情,我也遇到了同样的事情。
在我的一台服务器上,我运行了一个 rsync,以将一个巨大的目录(大小大于 300 Gb)备份到安装在同一台机器上的不同磁盘。正在同步的目录包含数千个目录和文件。我使用“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 问题不应导致完全阻塞或崩溃。因此,它为每个连接创建一个分支并位于后台。