国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

linux中shell腳本統計apache日志中頁面訪問量

2024-08-27 23:58:53
字體:
來源:轉載
供稿:網友

apache日志是可以記錄到網站的各種訪問與狀態了,那么我們生成的日志一個個查看是非常的困難的,下面一起來看一個中shell腳本統計apache日志中頁面訪問量的例子,希望文章可以幫助到大家.

需求:在程序中有兩個頁面,用于某種用途,現需要統計這兩個頁面在每分鐘內的訪問量,包括總訪問次數,成功次數(狀態碼200),失敗次數,然后寫入到mysql中.

mysql字段:id(自增長)、time(實際統計時間)、year、month、day、hour、visit(總訪問量)、success、fail、target(目標).

  1. #!/bin/bash 
  2. #Desc       : analysis apache log for witch pages with one minutes 
  3. #install bc packages with yum install -y bc if not found bc command 
  4.  
  5. logdir=/var/log/httpd/80/access 
  6. logfile=$logdir/$(date +%Y%m%d)_access_log 
  7.  
  8. month=$(date|awk '{print$2}'
  9. day=$(date|awk '{print$3}'
  10. year=$(date|awk '{print$6}'
  11. hour=$(date|awk '{print$4}'|cut -d: -f1) 
  12. min=$(date|awk '{print$4}'|cut -d: -f2) 
  13.  
  14. # get current system times to /tmp 
  15. echo $month > /tmp/month.txt 
  16. echo $day > /tmp/day.txt 
  17. echo $year > /tmp/year.txt 
  18. echo $hour > /tmp/hour.txt 
  19. echo $min > /tmp/min.txt 
  20.  
  21. # compute run minute 
  22. if [ "$min" == "00" ]; then 
  23.         RUN_MINUTE=59 
  24.         else 
  25.                 if [ "$(awk -F '' '{print$(NF-1)}' /tmp/min.txt)" == "0" ]; then 
  26.             echo $(awk -F '' '{print$NF}' /tmp/min.txt) > /tmp/min2.txt 
  27.                         echo $(cat /tmp/min2.txt) -1|bc > /tmp/run_minute.txt 
  28.  
  29.                 if [ "cat /tmp/run_minute.txt" == "0" ]; then 
  30.                                     RUN_MINUTE=00 
  31.                 else 
  32.                     RUN_MINUTE=0$(cat /tmp/run_minute.txt) 
  33.                                 fi 
  34.  
  35.                 else 
  36.  
  37.                          echo $(cat /tmp/min.txt) -1|bc > /tmp/run_minute.txt 
  38.                 if [ "$(cat /tmp/run_minute.txt)" == "9" ]; then 
  39.                     RUN_MINUTE=09 
  40.                 else 
  41.                                 RUN_MINUTE=$(cat /tmp/run_minute.txt) 
  42.                 fi 
  43.                 fi 
  44.  
  45. fi 
  46.  
  47. # compute run hour 
  48. if [ "$hour" == "00" ]; then 
  49.         if [ "$min" == "00" ]; then 
  50.         RUN_HOUR=23 
  51.     else 
  52.         RUN_HOUR=$hour 
  53.         fi 
  54.     else 
  55.         if [ "$min" == "00" ]; then 
  56.             if [ "$(awk -F '' '{print$(NF-1)}' /tmp/hour.txt)" == "0" ]; then 
  57.             echo $(awk -F '' '{print$NF}' /tmp/hour.txt) > /tmp/hour2.txt 
  58.             echo $(cat /tmp/hour2.txt) -1|bc >/tmp/run_hour.txt 
  59.                 if [ "$(cat /tmp/run_hour.txt)" == "0" ]; then 
  60.                     RUN_HOUR=00 
  61.                               else 
  62.                                     RUN_HOUR=0$(cat /tmp/run_hour.txt) 
  63.                 fi 
  64.             else 
  65.                 echo $(cat /tmp/hour.txt) -1|bc >/tmp/run_hour.txt 
  66.                 RUN_HOUR=$(cat /tmp/run_hour.txt) 
  67.             fi 
  68.         else 
  69.             RUN_HOUR=$hour 
  70.         fi 
  71. fi 
  72.  
  73. # get run log file 
  74. if [ "$hour" == "00" ]; then 
  75.     if [ "$min" == "00" ]; then 
  76.     RUN_LOG=$logdir/$(date -d last-day +%Y%m%d_access_log) 
  77.         else 
  78.         RUN_LOG=$logfile 
  79.     fi 
  80.     else 
  81.         RUN_LOG=$logfile 
  82. fi 
  83.  
  84. begin log analysis 
  85. p1=cnbpush.php 
  86. p2=jlpush.php 
  87.  
  88. if [ "$hour" == "00" ]; then 
  89.     if [ "$min" == "00" ]; then 
  90.         INSERT_TIME=$(date -d '-1 hours' +%Y%m%d |cut -c 3-8)$RUN_HOUR$RUN_MINUTE 
  91.         else 
  92.         INSERT_TIME=$(date +%Y%m%d |cut -c 3-8)$RUN_HOUR$RUN_MINUTE 
  93.     fi 
  94.     else 
  95.         INSERT_TIME=$(date +%Y%m%d |cut -c 3-8)$RUN_HOUR$RUN_MINUTE 
  96.  
  97. fi 
  98.  
  99. echo $INSERT_TIME | cut -c 1-2 > /tmp/IY 
  100. echo $INSERT_TIME | cut -c 3-4 > /tmp/IM 
  101. echo $INSERT_TIME | cut -c 5-6 > /tmp/ID 
  102. echo $INSERT_TIME | cut -c 7-8 > /tmp/IH 
  103. INSERT_YEAR=20$(cat /tmp/IY) 
  104. INSERT_MONTH=$(cat /tmp/IM) 
  105. INSERT_DAY=$(cat /tmp/ID) 
  106. INSERT_HOUR=$(cat /tmp/IH) 
  107.  
  108. CN_TOTAL_ACCESS=$(cat $RUN_LOG | grep "$p1" | awk -F ':' '{print$2$3}'| grep "$RUN_HOUR$RUN_MINUTE" | wc -l) 
  109. CN_SUCC_ACCESS=$(cat $RUN_LOG | grep "$p1" | grep "200" | awk -F ':' '{print$2$3}'| grep "$RUN_HOUR$RUN_MINUTE" | wc -l) 
  110. CN_FAIL_ACCESS=$(cat $RUN_LOG | grep "$p1" | grep -v "200" | awk -F ':' '{print$2$3}'| grep "$RUN_HOUR$RUN_MINUTE" | wc -l) 
  111.  
  112. JL_TOTAL_ACCESS=$(cat $RUN_LOG | grep "$p2" | awk -F ':' '{print$2$3}'| grep "$RUN_HOUR$RUN_MINUTE" | wc -l) 
  113. JL_SUCC_ACCESS=$(cat $RUN_LOG | grep "$p2" | grep "200" | awk -F ':' '{print$2$3}'| grep "$RUN_HOUR$RUN_MINUTE" | wc -l) 
  114. JL_FAIL_ACCESS=$(cat $RUN_LOG | grep "$p2" | grep -v "200" | awk -F ':' '{print$2$3}'| grep "$RUN_HOUR$RUN_MINUTE" | wc -l) 
  115.  
  116. DB_NAME=shell_log 
  117. DB_USER=root 
  118. DB_PASS=root 
  119. DB_TAB=log 
  120.  
  121. mysql -u$DB_USER -p$DB_PASS $DB_NAME -e "INSERT INTO $DB_TAB(time,year,month,day,hour,visit,success,fail,target) VALUES ('$INSERT_TIME', '$INSERT_YEAR', '$INSERT_MONTH', '$INSERT_DAY', '$INSERT_HOUR', '$CN_TOTAL_ACCESS', '$CN_SUCC_ACCESS', '$CN_FAIL_ACCESS', 'cnbpush');" 
  122. mysql -u$DB_USER -p$DB_PASS $DB_NAME -e "INSERT INTO $DB_TAB(time,year,month,day,hour,visit,success,fail,target) VALUES ('$INSERT_TIME', '$INSERT_YEAR', '$INSERT_MONTH', '$INSERT_DAY', '$INSERT_HOUR', '$JL_TOTAL_ACCESS', '$JL_SUCC_ACCESS', '$JL_FAIL_ACCESS', 'jlpush');" --Vevb.com 
  123.  
  124. exit 

放到任務計劃,一分鐘一執行.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 梧州市| 高清| 台江县| 潮州市| 当雄县| 梓潼县| 龙岩市| 松滋市| 临邑县| 南汇区| 偏关县| 山丹县| 昌宁县| 鹤山市| 新晃| 黄冈市| 漯河市| 扶风县| 文化| 灵璧县| 稷山县| 穆棱市| 永康市| 呼图壁县| 迁西县| 正蓝旗| 宝应县| 红桥区| 郸城县| 林芝县| 新河县| 神池县| 左云县| 五华县| 洪江市| 镇雄县| 长宁区| 延安市| 集安市| 平塘县| 永吉县|