gpt4 book ai didi

recursion - wget 使用 -r 和 -O - 挂起

转载 作者:行者123 更新时间:2023-12-02 22:36:51 26 4
gpt4 key购买 nike

这是一个非常奇怪的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 myfile 更改 -O - 或删除 -r
我使用 -O - 因为我将输出传递给 grep
有人能解释一下吗?你见过类似的东西吗?

最佳答案

当然:

 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(例如连字符“-”),因此它无法找到任何标签并等待输入。然后,您将有一个 wget 进程在读取系统调用上永远等待。

要解决此问题,您可以: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

关于recursion - wget 使用 -r 和 -O - 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19681316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com