我有一个已添加到 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"