有一個大於10G的apache訪問日誌,要求找出訪問/stat.php頁面次數大於1000次的前100個IP
日誌樣本以下:php
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,得出結果後合併到一個文件中,再進一步分析。
答案:web
#!/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
題:寫一個腳本或者一條命令查找/var/log目錄下,最後修改時間大於30天,後綴爲*.log的文件並刪除。
答:面試
find /var/log/ -mtime +30 -name "*.log" -exec rm -rf {}\;
題:寫一個腳本或者一條命令將/data目錄下大於100K的文件移動到/tmp目錄下
答:apache
find /data -size +100k -exec mv {} /tmp \;
題:如何將192.168.10.2主機80端口的請求轉發到172.116.10.3的8080端口?
答:bash
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
一、劃分vlan有什麼做用?
二、路由器都哪些協議?路由器的做用是什麼?
三、如何劃分子網?
四、ping命令是用哪一種協議?
五、OSPF的工做原理?
六、簡述一下TCP三次握手和四次揮手?
七、個人遊戲裏有個頁面,用戶進入那個頁面報網絡不通或者網絡緩慢,你應該怎麼排查?
八、OSI七層模型分別是什麼?
九、會不會思科路由器的配置命令?
十、簡述一下https中的三次握手?
十一、Dos攻擊和DDos攻擊有什麼區別?網絡