监视/观察正在运行的 rsync 进程

监视/观察正在运行的 rsync 进程

我有一个已添加到 crontab 的 rsync 作业,当它运行时,我只能检查是否有一个 rsync PID,并通过 htop 确认它是否消耗了一定数量的 CPU 和 RAM。

我想做的是实时监控哪些文件正在被 rsync ……当我想这样做的时候。仅供参考,我没有向命令传递任何详细选项,也没有添加任何日志记录。我真的只是想根据需要检查正在 rsync 的内容。

知道如何实现这个目标吗?

答案1

您可以执行以下操作(在 POSIX shell 中,包括bash):

strace -e open,openat $(ps -o lwp= -LC rsync | sed 's/^/-p/')

或者zsh

strace -e open,openat -p${^$(ps -o lwp= -LC rsync)}

或者fish

strace -e open,openat -p(ps -o lwp= -LC rsync)

或者在rc/中es

strace -e open,openat -p`{ps -o lwp= -LC rsync}

看看它在做什么,或者

lsof -ad3-999 -c rsync

查看当前已打开的文件。

答案2

最简单的解决方案是将 rsync 的输出重定向到日志文件。

rsync -avz /something /somwhere >> ~/rsynclog

答案3

另一种方法是,如果您知道要同步的粗略目录(例如,我们将使用目录“电影”),您可以使用 lsof 和 grep 的组合:

lsof | grep rsync | grep 电影

lsof 将列出您打开的文件,通过管道将输出传输到 grep 以查找任何由 rsync 打开的文件,再通过管道将输出传输到 grep 以查找打开的目录/文件。

答案4

作为基拉伊·伊什特万建议,我正在运行

rsync -ravz /Users/jkirby/Music/iTunes/* .

给出如下输出

Jeffs-MBP-2:2016-08-15 jkirby$ rsync -ravz /Users/jkirby/Music/iTunes/* .
building file list ... done
Temp File 1.tmp
Temp File.tmp

从该输出中我可以看到正在复制的目录。

rsync在缓慢复制大量大文件的情况下,我会使用watch类似这样的方法监视该目录。这样,我可以看到rsync创建的临时文件,也可以看到当前正在复制的文件的大小增长情况。

watch -n1 "~/Music/iTunes"

相关内容