Recursion wget与-r和-O挂起-
这是一种非常奇怪的行为。我在debian 7.2上Recursion wget与-r和-O挂起-,recursion,stdout,wget,freeze,Recursion,Stdout,Wget,Freeze,这是一种非常奇怪的行为。我在debian 7.2上 wget -r -O - www.blankwebsite.com 永远挂着。我的意思是它挂起了,它不是在互联网上搜索, 我可以用策略验证它。 如果我这样做: while read R do wget -r -O - www.blankwebsite.com done < smallfile 对于空的test.html文件,结果相同。对我来说,这听起来像一只虫子。 使用-O myfile更改-O-或删除-r 我使用了-O-,因为
wget -r -O - www.blankwebsite.com
永远挂着。我的意思是它挂起了,它不是在互联网上搜索,
我可以用策略验证它。
如果我这样做:
while read R
do
wget -r -O - www.blankwebsite.com
done < smallfile
对于空的test.html
文件,结果相同。对我来说,这听起来像一只虫子。
使用-O myfile
更改-O-
或删除-r
我使用了-O-
,因为我正在将输出传递给grep
有人能解释一下吗?你见过类似的东西吗?@tonjo:你能试试使用下面的代码吗
wget -r -O file www.blankwebsite.com
而不是使用
wget -r -O - www.blankwebsite.com
当然:
wget -r -O file www.blankwebsite.com
工作正常,但问题在于:
wget -r -O - www.blankwebsite.com
挂断
同样的问题是,如果创建FIFO
mkfifo /tmp/myfifo
wget -r -O /tmp/myfifo www.blankwebsite.com
使用-r选项调用wget时,将尝试查找读取输出文件的HTML“a href=…”标记。由于输出文件是FIFO或标准输出(例如连字符“-”),因此无法找到任何标记并等待输入。然后,您将在读取系统调用中拥有一个wget进程waintg forever
要解决此问题,您可以:
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
如文件所述:
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将数据直接序列化到文件的方式不兼容。如果仔细阅读整个问题,我就这样做了,我指出问题只存在于标准版本,我知道格式-O文件
有效,我知道错误在于使用“-O-”,这正是我写的。你什么都读了吗?我的问题不同。为什么在
工作时将代码包含在中?我的问题是:“你能解释一下吗?”和“你看到类似的东西了吗?”在while循环中,你有一个“read”和一个重定向“
关闭标准输入,而不是标准输出。与您之前所说的相同,-r
将尝试查找正在读取的HTML标记。。。输出?为什么它应该读取输出??同样使用FIFO,wget从指定的站点读取行,而不是从输出!非常混乱的回答…对不起,我刚刚犯了一个错误。我试着更好地解释它。当使用“-r-O-”调用wget时,它从网站读取数据并将输出发送到stdout。但是,这只是第一个html页面。“-r”将在输出上搜索href标记。。。使用“-O-”可以将wget输出重定向到stdout,因此“-r”尝试读取stdout以查找href标记并执行递归。这是一个错误。正如我在第一个答案中所说,fifo也出现了同样的情况。您的while循环可以在wget-r-O-www.blankwebiste.com中转换
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.