为什么 rsync 会自己分叉?为什么一个这样的分叉进程几乎是空闲的(如 iotop 中所见)?

Gau*_*ani 11 linux rsync command

这是指这里提到的问题,我也遇到了同样的情况。

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

nohup rsync -avh /some/local/dir /backup/ >> /opt/rsync.dec22.log &
Run Code Online (Sandbox Code Playgroud)

然后只是为了检查复制数据的速度,我使用了“iotop”命令,发现有 3 个 rsync 使用相同的参数运行。在搜索时,我发现上面的链接说这是正常的。

但是在执行 iotop 以仅监视系统上运行的那些和唯一的 rsync 进程时,我看到一个进程正在读取文件,一个正在写入文件,但一个进程处于空闲状态。行为似乎很好,因为一个进程一次只做一件事,但是第三个进程在做什么(如下图中间的一个)?

我使用的 iotop 命令是:

iotop -p22250 -p22251 -p22252
Run Code Online (Sandbox Code Playgroud)

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

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

我问这个是因为我经常使用 rsync,并想了解它的行为以获得长期利益。我什至阅读了手册,但它没有提到分叉。

Gru*_*mpy 9

rsync 是一个设计为客户端和服务器的程序。服务器读取,客户端写入。想象一下,不是一台计算机,而是网络上的计算机,我敢肯定,如果你这样想的话会更清楚。

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

  • @GautamSomani 官方 rsync 页面将是您最好的来源。http://rsync.samba.org/ 另外,它的工作原理可以在这里找到:http://rsync.samba.org/how-rsync-works.html 如果你想了解更多的细节,你可能需要深入研究来源。 (3认同)