2011-04-08 47 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