Как Вы контролируете прогресс DejaDup?

У меня есть "Резервное копирование" приложение DejaDup, создавая резервную копию моей домашней папки к зашифрованному внешнему жесткому диску USB, но требуются часы. "Резервное копирование GUI теперь" кнопка отображается серым, указывая, что это работает, и Gnome говорит "запуск запланированного резервного копирования". Однако я понятия не имею, сколько времени это должно взять. Там должен так или иначе получить информацию о прогрессе от DejaDup?

Вершина показывает, что процесс двуличности работает с опцией --log-fd=16. Страница справочника двуличности указывает, что это - дескриптор файла файла журнала, в который это пишет обновления статуса. Однако, если я работаю tail -f 16, Я получаю ошибку tail: no files remaining. Как я читаю этот дескриптор файла журнала?

3
задан 6 November 2016 в 22:12

3 ответа

Я думаю, что можно контролировать его как это:

PS использования, получите PID и журнал 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, используют кошку или grep.

$ cat 18

Это показывает слишком много информации для меня. 90% из него - мой исключать шарики.

$ grep "examining path" 18

работы хорошо для наблюдения, какой файл исследуется. При рассмотрении вывода можно также сфокусироваться на том, когда он находит соответствие файлов (и не нуждаются в резервном копировании), или когда они отличаются.

6
ответ дан 1 December 2019 в 13:08

На основе решения, предоставленного @RichardSchwarting, я создал следующую команду, которая проверяет, выполняет ли процесс кошки на /proc/x/fd/y:

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
4
ответ дан 1 December 2019 в 13:08

Я дополнил ответ Ричарда. https://askubuntu.com/a/952872/359904

cat /proc/$(pgrep duplicity)/fd/$(ps aux | grep duplicity | perl -lne 'push @a,/fd=(\d+)/g;END{print "@a"}')

Ссылка: https://stackoverflow.com/questions/17462659/search-for-a-string-and-print-next-to-that-using-sed-awk

0
ответ дан 8 November 2020 в 07:54

Другие вопросы по тегам:

Похожие вопросы: