有时当来自实用程序w3m的进程正在运行时脚本阻塞

时间:2012-08-08 11:47:49

标签: linux bash shell

我正在编写一个脚本,用于计算网络上的单词分布(基本上是单词的出现次数)

我所做的是生成搜索引擎的随机页面,从中提取链接并计算其中的单词。

我使用谷歌,但验证码阻止了我的请求 现在我正在使用bing 一切正常,但有一个奇怪的问题

在某一点上,在我扫描100到300页之后,我的程序完全阻止什么都不做

我检查ps x并且有一个实用程序w3m正在尝试下载某个东西的过程,但它就像空闲

如果我终止了这个过程,那么我的脚本会继续运行而不会出现任何问题,而且没有任何事情发生......

它可能是什么?我写的一些错误代码,bing阻止了太多的请求?

我在考虑一个非常不优雅的解决方案

基本上我可以杀死这个过程,如果它的空闲时间超过5秒左右,你怎么想?怎么做呢? 我担心我的整个程序会阻塞,所以我需要一个外部脚本来检查正在运行的进程,如果它们阻塞则杀死w3m程序

非常感谢,感谢抱歉。 真的很感激

2 个答案:

答案 0 :(得分:1)

看起来某些页面已经消失或者远程服务器没有响应,并且w3m挂起它等待超时超过。 顺便说一下,在脚本中使用w3m非常不合适。通常curlwget用于此目的。

例如,wget--timeout=选项可以避免此类问题。

快速谷歌搜索后,我发现w3m中的超时没有任何用处。希望你比我幸运一点。

答案 1 :(得分:0)

  我扫描100到300页之后

您可能超出了搜索提供商设置的某些阈值,以防止重复抓取。如果搜索提供商猜测你是一个松散的机器人,他们可能会在短时间内限制你的结果。