Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 线程化wget-最小化资源_Shell_Wget - Fatal编程技术网

Shell 线程化wget-最小化资源

Shell 线程化wget-最小化资源,shell,wget,Shell,Wget,我有一个脚本,可以获取各种IP的GeoIP位置,它每天都在运行,我预计大约有50000个IP需要查找 我已经建立了一个GeoIP系统-我只想消除每个报告运行wget 50000次的情况 我想的是,一定有办法让wget打开与url的连接,然后传递IP,这样就不必重新建立连接 任何帮助都将不胜感激。如果您同时提供wget多个地址,且连续地址属于同一个HTTP/1.1(连接:保持活动状态)支持服务器,wget将重新使用已建立的连接 如果有太多的地址要在命令行上列出,您可以将它们写入一个文件并使用-i/

我有一个脚本,可以获取各种IP的GeoIP位置,它每天都在运行,我预计大约有50000个IP需要查找

我已经建立了一个GeoIP系统-我只想消除每个报告运行wget 50000次的情况

我想的是,一定有办法让wget打开与url的连接,然后传递IP,这样就不必重新建立连接


任何帮助都将不胜感激。

如果您同时提供
wget
多个地址,且连续地址属于同一个HTTP/1.1(
连接:保持活动状态
)支持服务器,
wget
将重新使用已建立的连接

如果有太多的地址要在命令行上列出,您可以将它们写入一个文件并使用
-i
/
--input file=
选项(并且,按照UNIX的传统,
-i-
/
--input file=-
读取标准输入)


但是,无法在不同的
wget
调用之间保持连接。

您还可以编写一个线程化的Ruby脚本,在多个输入文件上同时运行wget,以加快进程。因此,如果您有5个文件,每个文件包含10000个地址,则可以使用以下脚本:

#!/usr/bin/ruby

threads = []

for file in ARGV
  threads << Thread.new(file) do |filename|
    system("wget -i #{filename}")
  end
end

threads.each { |thrd| thrd.join }

您还可以编写一个小程序(用Java或C或其他语言),将文件列表作为POST请求发送,服务器返回一个包含文件数据的对象。也不应该太慢。

嗯,一次只有5个连接,但您总共建立了50000个连接。不知道您可以“接受”答案。我想这只是复选框?
./fetch.rb "list1.txt" "list2.txt" "list3.txt" "list4.txt" "list5.txt"