为什么 rsync 会为我生成多个进程?

Rya*_*yan 26 linux rsync

我正在使用以下 cron 语句从一个文件夹备份到同一台机器上的另一个文件夹:

19 21 * * * root  rsync -ac --delete /source/folder /dest/folder
Run Code Online (Sandbox Code Playgroud)

我使用的时候pstree,看到cron fork了三个进程

 ??cron???cron???rsync???rsync???rsync
Run Code Online (Sandbox Code Playgroud)

ps

 9972 ?        Ds     1:00 rsync -ac --delete /source/folder /dest/folder
 9973 ?        S      0:29 rsync -ac --delete /source/folder /dest/folder
 9974 ?        S      0:09 rsync -ac --delete /source/folder /dest/folder
Run Code Online (Sandbox Code Playgroud)

为什么是三个进程?我可以限制只有一个吗?

fak*_*ker 29

http://rsync.samba.org/how-rsync-works.html

Rsync 是大量流水线化的。这意味着它是一组以(主要)单向方式进行通信的进程。一旦文件列表被共享,管道的行为如下:
generator ? 发件人?接收者

生成器的输出是发送者的输入,发送者的输出是接收者的输入。每个进程独立运行,只有在管道停止或等待磁盘 I/O 或 CPU 资源时才会延迟。

您正在运行本地 rsync(源和目标是本地文件系统),因此所有三个进程都将在那里运行。
您无能为力,这是设计使然。

  • 您不能限制进程数,但您**可以**限制使用的带宽。我假设他的机器被 rsync 读取和写入同一个磁盘/块设备所困扰。在这种情况下,使用“--bwlimit”选项可能会有所帮助。 (8认同)