bash管道极限
我得到了一个要下载的URL的txt列表bash管道极限,bash,sed,limit,pipe,wget,Bash,Sed,Limit,Pipe,Wget,我得到了一个要下载的URL的txt列表 n=1 end=`cat done1 |wc -l` while [ $n -lt $end ] do nextUrls=`sed -n "${n}p" < done1` wget -N nH --random-wait -t 3 -a download.log -A$1 $nextUrls let "n++" done 我的内存满了,完全阻塞了我的电脑。 Any1知道如何将同时创建的管道限制为10个吗?您不是在创建管道(|),而是在创建后台进程
n=1
end=`cat done1 |wc -l`
while [ $n -lt $end ]
do
nextUrls=`sed -n "${n}p" < done1`
wget -N nH --random-wait -t 3 -a download.log -A$1 $nextUrls
let "n++"
done
我的内存满了,完全阻塞了我的电脑。
Any1知道如何将同时创建的管道限制为10个吗?您不是在创建管道(
|
),而是在创建后台进程(&
)。每次执行其主体时,您都会创建一个新的wget
进程,而不是等待它退出,这(取决于end
的值)可能会非常快地创建很多wget
进程。可以按顺序执行(删除&
),也可以尝试
顺便说一句,cat
的无用用法:您只需执行以下操作:
end=`wc -l done1`
您不是在创建管道(|
),而是在创建后台进程(&
)。每次执行其主体时,您都会创建一个新的wget
进程,而不是等待它退出,这(取决于end
的值)可能会非常快地创建很多wget
进程。可以按顺序执行(删除&
),也可以尝试
顺便说一句,cat
的无用用法:您只需执行以下操作:
end=`wc -l done1`
我有一个txt列表的网址,我想下载。。。我想做得更快
所以这里有一个最短的方法。以下命令从并行运行10个线程的文件*txt\u list\u of\u URL*中包含的列表中下载URL:
xargs -a txt_list_of_urls -P 10 -r -n 1 wget -nv
我有一个txt列表的网址,我想下载。。。我想做得更快
所以这里有一个最短的方法。以下命令从并行运行10个线程的文件*txt\u list\u of\u URL*中包含的列表中下载URL:
xargs -a txt_list_of_urls -P 10 -r -n 1 wget -nv
$@中ARG的;如果[“$NPROC”-GE4],则执行命令$ARG&NPROC=$($NPROC+1));然后等待NPROC=0 fi完成
如何将此与上面的代码结合?直接在您的wget之后&代码>行,放在下面:NPROC=$($NPROC+1));如果[“$NPROC”-通用电气4];然后等待;NPROC=0;fi
这将并行执行wget
,一旦有四个正在运行,它将等待,直到它们全部完成。然后继续生成下一个;如果[“$NPROC”-GE4],则执行命令$ARG&NPROC=$($NPROC+1));然后等待NPROC=0 fi完成
如何将此与上面的代码结合?直接在您的wget之后&代码>行,放在下面:NPROC=$($NPROC+1));如果[“$NPROC”-通用电气4];然后等待;NPROC=0;fi
这将并行执行wget
,一旦有四个正在运行,它将等待,直到它们全部完成。然后继续生成下一个命令。xargs
是一个非常强大的命令。您应该在manxargs
上了解更多信息xargs
是一个非常强大的命令。您应该在man xargs
上了解更多关于此的信息。