Answers:
我不会将其称为多线程,但您可以在后台简单地启动70个作业:
for i in {1..70}; do
wget http://www.betaservice.domain.host.com/web/hasChanged?ver=0 2>/dev/null &
done
这将导致70个wget
进程同时运行。您还可以执行一些更复杂的操作,例如以下小脚本:
#!/usr/bin/env bash
## The time (in minutes) the script will run for. Change 10
## to whatever you want.
end=$(date -d "10 minutes" +%s);
## Run until the desired time has passed.
while [ $(date +%s) -lt "$end" ]; do
## Launch a new wget process if there are
## less than 70 running. This assumes there
## are no other active wget processes.
if [ $(pgrep -c wget) -lt 70 ]; then
wget http://www.betaservice.domain.host.com/web/hasChanged?ver=0 2>/dev/null &
fi
done
pgrep: invalid option -- 'c'
。我不确定为什么,您能想到什么原因吗?
pgrep
实现。这是Linux吗?哪一个?无论如何,您可以将该行更改为if [ $(pgrep wget | wc -l) -lt 70 ]; then
试试ab,您也会得到一个不错的统计数据:
ab -n 10000 -c 70 http://www.betaservice.domain.host.com/web/hasChanged?ver=0
该调用将执行10000个请求,并发70个并行查询。
Red Hat Enterprise Linux Server release 6.3
?
yum install httpd-tools
,根据serverfault.com/a/363775/10989
您可以尝试并行安装GNU。您可以从此处获得一些GNU并行示例。
测试中
我gnu-parallel
从源代码安装在机器上,可以正常工作。
您可以从此处从源代码安装它。我有一个红帽系统,所以我下载了Fedora的包,然后跑了.configure
,make
并make install
得到了parallel
安装在我的系统。
现在,在成功安装之后,我创建了一个目录checking
并运行以下命令。
seq 10 | parallel -n0 wget http://www.betaservice.domain.host.com/web/hasChanged?ver=0
不出所料,上述命令为我下载了10个网页副本。您可以设置所需的数字seq
。
有关如何并行运行同一命令的更多信息,您可以从此处验证gnu-parallel提供的示例。在示例页面中,
如果要使用相同的参数并行运行同一命令10次,则可以执行以下操作:
序列10 | 平行-n0 my_command my_args
编辑
现在,要利用parallel
执行的优势,可以将命令用作
seq 70 | parallel -j70 wget http://www.betaservice.domain.host.com/web/hasChanged?ver=0
该-j
选项可以根据总CPU内核数指定可以并行执行的总作业数。
GNU parallel
。unix.stackexchange.com/questions/114962/…–