3

这是一个非常奇怪的wget行为。我在Debian 7.2上。

wget -r -O - www.blankwebsite.com

永远挂着。我的意思是它挂起,它没有通过互联网搜索,我可以用strace. 如果我这样做:

while read R
do
   wget -r -O - www.blankwebsite.com
done < smallfile

包含smallfile一行,命令在几秒钟内退出。

我也试过

wget -r -O - localhost/test.html

使用空test.html文件,结果相同。对我来说,这听起来像是一个错误。更改或删除
一切运行良好-O -。 我使用是因为我将输出传递给. 谁能解释一下?你见过类似的东西吗?-O myfile-r
-O -grep

4

3 回答 3

7

当然:

 wget -r -O file www.blankwebsite.com

有效,但BUG是:

 wget -r -O - www.blankwebsite.com

挂起!

同样的问题是如果你创建一个 FIFO

mkfifo /tmp/myfifo
wget -r -O /tmp/myfifo www.blankwebsite.com

wget,当使用 -r 选项调用时,将尝试查找读取输出文件的 HTML“a href=...”标签。由于输出文件是 FIFO 或 stdout(例如 HYPHEN char '-'),它无法找到任何标签并等待 INPUT。然后,您将在读取系统调用上永远拥有一个 wget 进程 waintg。

要解决此问题,您可以:1)修补 wget 以处理这种情况 2)修补 wget 以不允许“-r -O -”组合...(只需检查“-O”的参数是否为常规文件)3)使用以下解决方法:

TMPFILE=$(mktemp /tmp/wget.XXXXXX)
wget -r -O $TMPFILE www.blankwebsite.com
grep STRING $TMPFILE
rm $TMPFILE
于 2013-10-31T19:42:23.843 回答
0

@tonjo:您能否尝试使用以下代码。

wget -r -O file www.blankwebsite.com

而不是使用

 wget -r -O - www.blankwebsite.com
于 2013-10-31T17:18:36.507 回答
0

如文档中所述:

 Similarly, using '-r' or '-p' with '-O' may not work as you expect:
 Wget won't just download the first file to FILE and then download
 the rest to their normal names: _all_ downloaded content will be
 placed in FILE.  This was disabled in version 1.11, but has been
 reinstated (with a warning) in 1.11.2, as there are some cases
 where this behavior can actually have some use.

这是一个已知问题,也是以某种方式下载的,将 -r 和 -O 与不可查找的文件一起使用不适用于 wget 将数据直接序列化到文件的方式。

于 2013-11-11T10:32:44.517 回答