为什么 rsync 进程即使被 Ctrl-C 杀死后仍继续运行?

为什么 rsync 进程即使被 Ctrl-C 杀死后仍继续运行?

我正在运行 rsync 进程以将我的文件同步到远程位置。I/O 负载相当高,主要是在访问远程位置时。本地位置是机器磁盘。

我多次终止了 rsync 进程(使用 Ctrl-C)以适应其他任务。

不久前,我简单地检查了一下,发现全部机器重启后启动的 rsync 进程处于 D 状态运行。

在此处输入图片描述

就像这里

处于 D 状态的进程不会立即处理信号,因为它目前正处于等待磁盘的状态(通常如此,代码中的字母 D 就是由此而来的)。如果进程卡住的时间较长,或者多个进程处于相同状态,则表示存在问题。那么问题可能与高 I/O 负载有关(例如,太多进程想要从速度太慢的磁盘读取数据)。

再进行一些探索就会发现。

在此处输入图片描述

以上内容表明流仍然畅通。

正如我已经指出的那样,此 rsync 任务涉及相当高的 I/O 负载(大量写入 Google Drive)。但这是否意味着几个小时后无法关闭流?

当发出 kill 命令 ( killall -KILL rsync) 时,这些进程就消失了,没有任何抱怨的迹象。

我使用 Ctrl-C 终止是否犯了错误?

处理偶尔终止 rsync 进程的需求的最佳方法是什么?

还有哪些措施可以改善整体情况?

相关内容