量已不可改变
时间如何缩短
我以身陷这该死的shell中
最近在分析网站的日志
将不同的地址的数据分别入库
假设
一次打开链接的开销为  2
一次入库的开销为        1
IO最大并发为           10
每天有500,000条数据在logs文件中,来自3000个地址
问:如何才能在最快的时间最有效率的处理完这些数据
#从日志中去除所有要处理的地址,排序,去除重复并记录重复次数,按重复次数排序,输出行号写入jobs
cat logs|awk ‘{if($7~/^\/[^\/]+$/){print $7}}’|sort|uniq -c|sort -nr |cat -n 〉jobs
#分离jobs,约均分为等行的3份 输出为 jobs.aa jobs.ab jobs.ac
split -l $[$(wc -l jobs |awk '{print $1}')/3+1] jobs jobs.
rm jobs #clear
#开通读取管道3
exec 3〈log/feed/$logs.jobs.aa;
#使用8个worker3进行并行处理
wc=8;#worker数
w=0
while [ $w -lt $wc ]
do
  worker3 $w & #在后台启动worker3
  echo worker 3.$w is run;
  w=$[$w+1];
done
使用管道3进行任务处理
function worker3(){
  n=3.$1;#worker编号
  echo “#begin $n $(date -u)” 〉log/feed/worker.$logs.$n.txt;
  echo “#begin”〉log/feed/log.$logs.$n.txt
  echo [...]