rsync через ssh зависает в демоне синхронизации файлов - PullRequest
1 голос
/ 25 января 2012

Я пишу приложение для синхронизации файлов, в котором я собираю событие из файловой системы при каждом изменении файла, а затем копирую его на удаленный общий ресурс через rsync через ssh. В моей настройке у меня есть слот, который подключен к QTimer. Каждые 5 секунд я выбираю файл из базы данных sqlite для синхронизации и запускаю QProcess :: start со следующими параметрами

/usr/bin/rsync -a /aufs/another-test-folder/testfile286.txt --rsh="ssh -p 8023" user@myserver.de:/home/neox/another-test-folder/testfile286.txt --rsync-path="mkdir -p /home/neox/another-test-folder && rsync"

У меня не более 2 процессов rsync, работающих параллельно. В результате получается дерево процессов:

MyApp
  \_rsync
  |   \_ssh
  |_rsync
      \_ssh

Проблема в том, что иногда приложение зависает, а ps сообщает, что процессы ssh прошли зомби. Сначала я попытался убить MyApp с помощью SIGKILL, но безуспешно. Затем я перешел к уничтожению rsync и ssh, но все равно не повезло Целое дерево висит. И если я попытаюсь запустить демон с другой консоли или даже попытаться запустить ssh в другую коробку, я не смогу. Моя идея заключается в том, что где-то ssh блокирует некоторые ресурсы ввода-вывода. Есть идеи, как это решить?

P.S. Это происходит случайно и не часто

...