2011-04-08 61 views
1

我使用Net :: SSH2在遠程主機上運行慢管理命令。perl Net :: SSH2通道執行超時

的Perl 5.8.8 libssh2 1.2.2

我不斷收到信道EXEC一個奇怪的 「超時」。 $chan->exec($command);

正在執行的命令通常運行長達一個小時(60分鐘),執行過程中輸出最少。

短命令正常工作。 約一分鐘後,輸出最少的慢速輸出返回1。

我已將套接字設置爲阻塞,並將超時設置爲60分鐘等等......沒有任何幫助。

任何想法?

回答

1

在Net :: SSH2中使用「nohup命令&」運行該命令,然後通過檢查衍生程序的狀態來保持連接處於活動狀態。

參見以下螺紋的更多信息:

http://www.perlmonks.org/index.pl?node_id=868377

+0

我希望與插槽上libssh或最壞的情況下解決這個問題。被調用的應用程序的工作方式,我不能依賴這種過程監控。 – peitur 2011-04-20 06:28:54

+0

它不需要進行狀態檢查,只要你通過套接字推送某些東西,你應該沒問題,或者你可以修改執行的命令,每隔幾秒輸出一些東西,無論是使用線程還是使用fork() ,我現在只是把東西扔到那裏。 – Horus 2011-04-20 15:33:21