linux 日志面试题,Linux运维 | 面试题

统计web日志中IP访问次数

有一个大于10G的apache访问日志,要求找出访问/stat.php页面次数大于1000次的前100个IP

日志样本如下:

212.11.129.182 - [26/Mar/2015:03:00:01 +0800] "GET/stat.php?pid=016 HTTP/1.1" 302 20-"-" "-" ""Mozllia/4.0(compatible;MSIE 6.0;Windows NT 5.1)"

解析:10G的日志已经很大了,直接使用grep或者awk进行分析会很慢,对服务器内存消耗大,如果服务器配置低,可以考虑把日志切割,比如切割成100个100M的文件,然后针对这100个文件分别进行统计排名前100的IP,得出结果后合并到一个文件中,再进一步分析。

答案:

#!/bin/bash

sta(){

grep '/stat.php' $1|awk '{print $1}' | sort -n |unic -n|sort -n|tail -100

}

logfile=/data/logs/access.log

mkdir /data/logs/tmp

cd /data/logs

# 分割成100个100M的文件

split -b 100M access.log smallfile

mv smallfile* tmp

cd tmp

# 把分割后的文件中的ip前100个计算出来

for f in `ls smallfile*`

do

sta $f >> top100.txt

done

# 编写函数,计算每个IP出现的次数

count_sum(){

sum=0

for f in `ls smallfile*`

do

n=`grep "$1" $f|wc -l`

sum=$[$sum+$n]

echo $sum $1

done

}

# 把得到的IP进行去重,作为遍历对象,把所有出现的IP次数统计出来

for ip in `awk '{print $2}' top100.txt|sort -n|uniq`

do

count_sum $ip >> ip.txt

done

# 先把IP大于1000次的过滤出来,然后按照IP次数进行排序,得到前100个

awk '$1>1000' ip.txt|sort -nr|head -100

find命令

题:写一个脚本或者一条命令查找/var/log目录下,最后修改时间大于30天,后缀为*.log的文件并删除。

答:

find /var/log/ -mtime +30 -name "*.log" -exec rm -rf {}\;

题:写一个脚本或者一条命令将/data目录下大于100K的文件移动到/tmp目录下

答:

find /data -size +100k -exec mv {} /tmp \;

iptables

题:如何将192.168.10.2主机80端口的请求转发到172.116.10.3的8080端口?

答:

iptables -t nat -A PREROUTING -d 192.168.10.2 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.116.10.3:8080

题:只允许远程主机访问本地80端口,写出iptables规则?

答:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -P INPUT DROP

网络面试题

1、划分vlan有什么作用?

2、路由器都哪些协议?路由器的作用是什么?

3、如何划分子网?

4、ping命令是用哪种协议?

5、OSPF的工作原理?

6、简述一下TCP三次握手和四次挥手?

7、我的游戏里有个页面,用户进入那个页面报网络不通或者网络缓慢,你应该怎么排查?

8、OSI七层模型分别是什么?

9、会不会思科路由器的配置命令?

10、简述一下https中的三次握手?

11、Dos攻击和DDos攻击有什么区别?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值