常見問題解決方案整理(一) Nginx Log日誌統計分析經常使用命令

tail命令

tail -300f shopbase.log #倒數300行並進入實時監聽文件寫入模式

 

grep命令

$ grep forest f.txt     #文件查找
$ grep forest f.txt cpf.txt #多文件查找
$ grep 'log' /home/admin -r -n #目錄下查找全部符合關鍵字的文件
$ cat f.txt | grep -i shopbase   
$ grep 'shopbase' /home/admin -r -n --include *.{vm,java} #指定文件後綴
$ grep 'shopbase' /home/admin -r -n --exclude *.{vm,java} #反匹配
$ seq 10 | grep 5 -A 3    #上匹配
$ seq 10 | grep 5 -B 3    #下匹配
$ seq 10 | grep 5 -C 3    #上下匹配,平時用這個就妥了
$ cat f.txt | grep -c 'SHOPBASE'

 

awk命令

$ awk '{print $4,$6}' f.txt
$ awk '{print NR,$0}' f.txt cpf.txt   
$ awk '{print FNR,$0}' f.txt cpf.txt
$ awk '{print FNR,FILENAME,$0}' f.txt cpf.txt
$ awk '{print FILENAME,"NR="NR,"FNR="FNR,"$"NF"="$NF}' f.txt cpf.txt
$ echo 1:2:3:4 | awk -F: '{print $1,$2,$3,$4}'



$ awk '/ldb/ {print}' f.txt   #匹配ldb
$ awk '!/ldb/ {print}' f.txt  #不匹配ldb
$ awk '/ldb/ && /LISTEN/ {print}' f.txt   #匹配ldb和LISTEN
$ awk '$5 ~ /ldb/ {print}' f.txt #第五列匹配ldb

內建變量

NR:NR表示從awk開始執行後,按照記錄分隔符讀取的數據次數,默認的記錄分隔符爲換行符,所以默認的就是讀取的數據行數,NR能夠理解爲Number of Record的縮寫。html

FNR:在awk處理多個輸入文件的時候,在處理完第一個文件後,NR並不會從1開始,而是繼續累加,所以就出現了FNR,每當處理一個新文件的時候,FNR就從1開始計數,FNR能夠理解爲File Number of Record。java

NF: NF表示目前的記錄被分割的字段的數目,NF能夠理解爲Number of Field。node

 

find命令

$ sudo -u admin find /home/admin /tmp /usr -name \*.log(多個目錄去找)
$ find . -iname \*.txt(大小寫都匹配)
$ find . -type d(當前目錄下的全部子目錄)
$ find /usr -type l(當前目錄下全部的符號連接)
$ find /usr -type l -name "z*" -ls(符號連接的詳細信息 eg:inode,目錄)
$ find /home/admin -size +250000k(超過250000k的文件,固然+改爲-就是小於了)
$ find /home/admin f -perm 777 -exec ls -l {} \; (按照權限查詢文件)
$ find /home/admin -atime -1  1天內訪問過的文件
$ find /home/admin -ctime -1  1天內狀態改變過的文件   
$ find /home/admin -mtime -1  1天內修改過的文件
$ find /home/admin -amin -1  1分鐘內訪問過的文件
$ find /home/admin -cmin -1  1分鐘內狀態改變過的文件   
$ find /home/admin -mmin -1  1分鐘內修改過的文件

 

top

top除了看一些基本信息以外,剩下的就是配合來查詢vm的各類問題了

  
$ ps-ef | grepjava
   $  top  -H -p pid


得到線程10進制轉16進制後jstack去抓看這個線程到底在幹啥

shell 10進制轉16進制輸出 
printf "%x" 100

 

網絡

Linux系統性能監控工具介紹之-tsar

https://blog.csdn.net/lin443514407lin/article/details/59654218linux

Nginx Log日誌統計分析經常使用命令

https://www.cnblogs.com/wangchaolinux/p/9404253.htmlshell

 

netstat命令

查看當前鏈接,注意close_wait偏高的狀況,好比
netstat -nat|awk  '{print $6}'|sort|uniq -c|sort -rn

 

 

VM options

一、你的類究竟是從哪一個文件加載進來的?

-XX:+TraceClassLoading

結果形如[Loaded java.lang.invoke.MethodHandleImpl$Lazy from D:\programme\jdk\jdk8U74\jre\lib\rt.jar]

二、應用掛了輸出dump文件

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/admin/logs/java.hprof

 vm參數裏邊基本都有這個選項tomcat

jar包衝突

mvn dependency:tree > ~/dependency.txt
打出全部依賴

mvn dependency:tree -Dverbose -Dincludes=groupId:artifactId
只打出指定groupId和artifactId的依賴關係

-XX:+TraceClassLoading
vm啓動腳本加入。在tomcat啓動腳本中可見加載類的詳細信息

-verbose
vm啓動腳本加入。在tomcat啓動腳本中可見加載類的詳細信息
相關文章
相關標籤/搜索