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

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

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

19 21 * * * root  rsync -ac --delete /source/folder /dest/folder

当我使用时pstree,我看到 cron 分叉了三个进程

 ├─cron───cron───rsync───rsync───rsync

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

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

答案1

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

Rsync 是高度流水线化的。这意味着它是一组以(很大程度上)单向方式通信的进程。一旦文件列表被共享,管道的行为如下:
生成器 → 发送器 → 接收器

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

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

相关内容