你如何监控DejaDup的进展?

我有“备份”DejaDup应用程序备份我的主文件夹到加密的外部USB硬盘驱动器,但它需要几个小时。 GUI的“立即备份”按钮显示为灰色,表示它正在运行,Gnome说“开始计划备份”。 但是,我不知道应该花多长时间。 无论如何从DejaDup获取进度信息?

Top显示了duplicity进程正在运行,选项为--log-fd=16 。 Duplicity的联机帮助页指示这是它将状态更新写入的日志文件的文件描述符。 但是,如果我运行tail -f 16 ,我会收到错误tail: no files remaining 。 如何读取此日志文件描述符?

我想你可以像这样监视它:

使用ps,获取PID和log fd,例如

 $ ps aux | grep duplicity username 12345 97.2 4.9 878235 345123 ? Rsl 02:21 15:02 python2 /usr/bin/duplicity --exclude=/run/media/..... --tempdir=/home/username/.cache/deja-dup/tmp --log-fd=18 

PID为12345,文件描述符为18。

然后转到/proc/PID/fd (/proc/12345/fd) ,而不是尝试拖尾文件描述符18,使用cat或grep。

 $ cat 18 

这显示了太多的信息给我。 其中90%是我的排除球。

 $ grep "examining path" 18 

适用于查看正在检查的文件。 如果查看输出,您还可以关注何时找到文件匹配(并且不需要备份)或何时不同。

基于@RichardSchwarting提供的解决方案,我创建了以下命令来检查进程是否正在运行并且/proc/x/fd/y上的cat是否:

 pid=$(pgrep -n duplicity); if [ $pid ]; then fd=$( ps -o cmd --no-headers $pid | sed -E 's/.+(log-fd=[0-9]+).?/\1/' | cut -f2 -d =); if [ $fd ]; then cat /proc/$pid/fd/$fd; else echo "fd not found"; fi else echo "pid not found"; fi