我通過我的Java應用程序中運行的rsync(的Solaris EVN)的Rsync通過java程序 - 與遠程連接失敗
的Java應用程序將同步與遠程計算機中的文件的問題。在我們的連接失敗測試中,我們注意到通過java程序運行rsync的問題。如果在同步過程中存在任何連接問題,則在源端運行的Java應用程序不會收到任何錯誤消息。
有關測試場景簡要說明:
- 我們運行Java程序
- Java程序啓動rsync命令和源同步的大量文件到遠程目標
- 在在同步過程中,我們運行
ps -ef | grep rsync
來檢查進程是否在運行(源端和目標端)。兩邊的rsync進程都在運行。 - 我們在目標機器上確定rsync進程標識並終止進程
kill -9 <pid>
- java代碼沒有收到任何錯誤消息,也沒有退出。它只是掛起來。
還注意到rsync進程仍在源端運行,rsync進程也不在日誌文件中打印任何日誌消息。
注意:如果我們直接運行rsync命令(不是通過java程序),那麼一切正常。當我們在目標處停止rsync進程時,源進程將停止。
當RSYNC在目標處終止時,Java程序和RSYNC未檢測到目標有問題。沒有寫入日誌文件,Java程序將掛起並變得無法響應。
通過perl其工作正常。不知道用java的問題...... !!!
我沒有任何線索來調試此問題。 請分享您的想法和指向調試。
感謝效應初探,線程方法也沒有爲工作我。看起來在rsync中有一個問題。如果我們使用rsync壓縮選項(-z),那麼它的工作原理是什麼呢?源RSYC現在能夠檢測到錯誤。例如:rsync -abvrz --delete/source// dest / –