Shell Script Practice 2 Summary
[这篇博客主要是我个人对这个任务的总结, 主要目的不是拿来和分享的, 所以难免让人感觉不知所云, 请直接忽视这篇即可.]
处理任务为两个输入文件comfe(1,000,000行,文件结构"域名 NS 该域名的权威服务器")和iplab.txt(64万行, 文件结构
"IP起始地址 CN 中国 地区编号 地区名称 省编号 省名称 市编号 市名称"), 要求将"权威服务器位于中国"的域名及其所在的
省市输出.
整个程序主要包括5个部分:
1.得到无重复的权威域名服务器(输出结果文件名ANS);时间46秒
2.通过多线程dig得到ANS的IP地址数值(输出结果文件名ANS-IPNum);时间288秒(4分钟多)
3.压缩处理iplab.txt,得到不同省市对应的IP地址数值范围(输出结果文件名IPRegion);时间26秒
4.对比IPRegion文件和ANS-IPNum文件得到权威所在的省市(输出结果文件名ANS-Region);时间1290秒(21分钟)瓶颈
5.对比ANS-Region文件和comfe文件得到最终结果(输出结果文件名result);时间639秒(10分钟)瓶颈
总用时2289秒(38分钟),找到的权威在国内的域名有60463个.
两个对比的地方占用了超过3/4的时间,是程序的主要瓶颈.
每个部分的主要工作,用下面的简单伪代码来描述如下:
1. 处理comfe文件: sort -u $2--> ANS, 结果为8万多行
2. 处理ANS文件: dig $0 --> ANS-IPNum(由于dig操作的对象数量较多,速度较慢,因此采用多进程), 结果为8万行左右
3. 处理iplab.txt文件: 压缩处理,得到IPRegion文件,结构为"IP起始 IP结束 省市名称",结果为2万多行
4. 对比ANS-IPNum和IPRegion文件,得到文件ANS-Region, 结构为"权威服务器名称 所在省市名称", 结果为2490行
5. 对比comfe和ANS-Region文件,得到最终结果文件result, 结构为"域名 权威服务器名称 所在省市名称", 结果为
代码略.
整个程序要注意的地方:
1. 要仔细分析每个输入文件的格式,对正确率和效率都有很大的影响:
(1) 在comfe文件中不是以"."结尾的域名要加COM处理
(2) 压缩处理iplab文件
2. 对于每个文件的处理顺序是非常重要的, 对整个程序的效率也有很大的影响.此处详细分析:
情况A:先对比ANS-IPNum和IPRegion得到ANS-Region,然后对比ANS-Region和comfe得到文件resultA
对比ANS-IPNum和IPRegion得到ANS-Region: 8万行 * 2万行, 结果ANS-Region (<= 8万行)
对比ANS-Region和comfe得到resultA: (<= 8万行) * 100万行
粗略的估计复杂度: 8万行 * 2万行 + (<= 8万行) * 100万行 -> 8万行 * 100万行
情况B:先对比ANS-IPNum和comfe得到NS-ANS-IPNum,然后对比IPRegion和NS-ANS-IPNum得到文件resultB
对比ANS-IPNum和comfe得到NS-ANS-IPNum: 8万行 * 100万行, 结果 <=100万行
对比ANS-Region和NS-ANS-IPNum得到文件resultB: <=100万行 * 2万行
粗略的估计复杂度: 8万行 * 100万行 + (<= 100万行) * 2万行 -> 10万行 * 100万行
尽管这两种情况,看起来差别不是很大, 但在实际运行时,时间差距还是比较大的.
总结:
1. 对于输入文件要仔细分析, 注意一些细节(为什么有的域名以"."结尾有的不是以"."结尾),默认缺省COM是为了减小文件的
大小.(也算是一种压缩存储)
2. 刚刚更改的程序的第一次运行尽量要守着观察,因为可能会有死循环或工作量很大时要及时终止任务的执行.
3. 不要再把实验室的服务器弄死机了!
Shell Script Practice 2 Summary的更多相关文章
- How to Create a First Shell Script
How to Create a First Shell Script Shell scripts are short programs that are written in a shell pr ...
- 学习shell script
摘要:概述.script的编写.test命令.[]判断符号.默认变量($1...).if...then条件判断式. 一.概述 [什么是shell script] 针对shell所写的脚本,将多个命令汇 ...
- Shell script之How to write
Write shell script: 1) Editor like vi or mcedi 2) Set execute permission for your script chmod perm ...
- shell及脚本4——shell script
一.格式 1.1 开头 必须以 "# !/bin/bash" 开头,告诉系统这是一个bash shell脚本.注意#与!中间有空格. 二.语法 2.1 数值运算 可以用decla ...
- shell script
一.shell script的编写与执行 1.shell script 的编写中还需要用到下面的注意事项: a.命令的执行是从上到下,从左到右地分析与执行 b.命令.参数间的多个空白都会被忽略掉 c. ...
- (copy) Shell Script to Check Linux System Health
source: http://linoxide.com/linux-shell-script/shell-script-check-linux-system-health/ This article ...
- shell script练习
执行脚本的几种方式: 1. sh a.sh 或者 bash a.sh 调用的是 /bin/bash 进程执行的,所以脚本不需要执行权限. 2. 直接使用绝对路径执行, /home/script/a ...
- 这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script
这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script ##转载注明出处:http://www.cnblogs.com/wade-xu/p/4378224.html ...
- CentOS Linux下一个tomcat起停,查看日志的shell script
CentOS 的tomcat安装目录:/usr/local/tomcat vi MyTomcatUitl.sh 创建文件chmod u+x MyTomcatUtil.sh 赋执行 ...
随机推荐
- C#取调用堆栈StackTrace
Environment.StackTrace or System.Diagnostics.StackTrace if you need a more convienient (i.e. not str ...
- spring :概述
本章涵盖 spring's bean容器 探讨spring's 核心模块 强大的spring生态 spring 4新增内容 spring提供了众多的功能,但是这些功能都有基础的任务:让java开发变得 ...
- 关于LNMP服务器 Thinkphp5验证码不显示问题
关于LNMP服务器 Thinkphp5验证码不显示问题 浏览:246 发布日期:2017/09/20 分类:ThinkPHP5专区 关键字: thinkphp验证码不显示 nginx下验证码不显示 ...
- (转 )【Android那些高逼格的写法】InvocationHandler与代理模式
转自这个公众号: 今天会聊一下InvocationHandler.说到InvocationHandler不得不提到的就是代理模式,什么是代理模式,举个例子,你玩游戏,花钱请个代练,代练其实是登录你的账 ...
- Linux Linux程序练习四
编写两个不同的可执行程序,名称分别为a和b,b为a的子进程. 在a程序中调用open函数打开a.txt文件. 在b程序不可以调用open或者fopen,只允许调用read函数来实现读取a.txt文件. ...
- Eclipse 快速修复
Eclipse 快速修复 使用快速修复 在 Eclipse 编辑器中当你输入字母时,编辑器会对你输入的内容进行错误分析. Java 编辑器中使用 Java 语法来检测代码中的错误.当它发现错误或警告时 ...
- 26计算限制的异步操作02-CLR
由CLR via C#(第三版) ,摘抄记录... 6 Parallel的静态For,ForEach和Invoke方法 在一些常见的编程情形中,使用任务也许会提升性能.为了简化编程,静态类System ...
- 浅谈DNS
什么叫域名解析 域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站一种服务.IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址.域名解析就是域 ...
- [Spring Framework]学习笔记--Dependency injection(DI)
1. 通过构造函数实现DI 简单类型实例 package examples; public class ExampleBean { // Number of years to calculate th ...
- The E-pang Palace(暴力几何)
//暴力的几何题,问,n个点可以组成的矩形,不相交,可包含的情况下,最大的面积,还有就是边一定与 x y 轴平行,所以比较简单了 //暴力遍历对角线,搜出所有可能的矩形,然后二重循环所有矩形,判断一下 ...