如何加快我的bash脚本?

时间:2012-12-24 03:18:45

标签: bash

然而,我知道它比手工做事要快得多。但无论如何可能加快这个脚本的速度?多线程还是什么?我是unix的新手,这是我的第一个脚本=)。打开建议或进行任何更改。脚本似乎随机地在某个生成的域上暂停了很多。

#!/bin/bash
for domain in $(pwgen -1A0B 2 10000); 
do
      whois $domain.com | egrep -q '^No match|^NOT FOUND|^Not fo|AVAILABLE|^No Data   Fou|has not been regi|No entri'
          if [ $? -eq 0 ]; then
              echo "$domain.com : available"
              else
              echo "$domain.com"
          fi
done

2 个答案:

答案 0 :(得分:1)

首先使用所需的域名创建一个文件。请拨打此domains.lst

pwgen -1A0B 2 10000 > domains.lst

然后创建更小的文件:

split --lines=100 domains.lst domains.lst.

然后创建一个脚本,该脚本获取文件名并使用whois处理该文件。还会创建一个输出文件input.out

创建另一个使用&的脚本在后台为所有小块启动上述脚本。所有后台任务完成后合并输出。

答案 1 :(得分:1)

在拆分和分发之前,

警告这似乎没用:要求pwgentwoa之间构建由z个字符组成的10'000行...此外,只有echo $((26*26)) -> 676种可能性(实际上,pwgen尝试构建可说字,只有625种可能性。)

pwgen -1A0B 2 10000 | sort | uniq -c | sort -n | tail
 27 ju
 27 mu
 27 vs
 27 xt
 27 zx
 28 df
 28 sy
 28 zc
 29 dp
 29 zd

因此,使用此命令,您将执行 29次相同的操作。

尝试10x​​运行pwgen -1A0B 2 10000来打印提出了多少不同的组合,以及提出更多时间和更少时间的组合:

for ((i=10;i--;)); do
    echo $(
        (
            (
                pwgen -1A0B 2 10000 |
                    sort |
                    uniq -c |
                    sort -n |
                    tee /dev/fd/6 |
                    wc -l >/dev/fd/7
            ) 6>&1 | (
                head -n1
                tail -n1
            )
        ) 7>&1
    )
  done
6 bd 625 31 bn
3 bj 625 29 sq
6 je 625 30 ey
4 ac 625 30 sz
5 ds 625 29 wf
4 xw 625 28 qb
4 jj 625 30 pa
6 io 625 29 sg
4 vw 625 30 kb
5 fz 625 31 os

此印刷品:

|  |  |   |  |
|  |  |   |  \- max proposed pattern
|  |  |   \---- number of times max proposed pattern was issued
|  |  \-------- number of different differents purposes
|  \----------- min proposed pattern
\-------------- number of times min proposed pattern was issued