小弟最近在幫忙排查生產環境上的問題,所以需要看生產上的日志,好久沒摸過服務器了,特此記錄一下使用的Linux命令。
grep命令
grep命令是在linux下看日志時經常會用到的
grep:查找文件中包含指定文本的命令
比如:grep '123456789' 20211018.log ---輸出2021101801.log這個日志下包含123456789的記錄
當然grep肯定不止這么簡單,下面寫下常用到的~
grep '123456789' * ---輸出當前文件夾下所有包含123456789'的記錄
比如當前目錄 /home/logs/log-20211018,查找的是log-20211018文件夾下所有且包含123456789的記錄
grep -r '123456789' * ---輸出當前目錄以及子目錄下所有包含123456789'的記錄,r=Recursive遞歸
比如當前目錄 /home/logs/log-20211018,查找的是當前目錄和子目錄下所有且包含123456789的記錄
grep -l -r ‘energywise’ * ---輸出當前目錄及其子目錄下包含'123456789'行的記錄,但是不顯示匹配的行,只顯示匹配的文件。
grep -i 不分區大小寫
grep -v 顯示除匹配以外的內容(就是不包含的意思)
grep -n 顯示匹配的行並行顯示當前行數是多少
grep -c 顯示匹配的行數總和(注意是行數,如果一行匹配到兩個也算一行)
tail命令
tail命令用在測試環境比較多,可以查看實時日志信息,便於定位錯位。
tail -f 20211018.log ---實時查看20211018.log日志輸出
tail -n 100 20211018.log ---輸出20211018.log最新的100行
head命令
head命令用的不多,主要是看文件的頭幾行吧
hear -n 50 20211018.log ---輸出20211018.log前50行記錄
sed命令
生產環境的日志文件一般都是非常大的,要在一個很大的日志中搜索或者下載某部分內容相當不容易,此時可以用sed命令!
輸出某一段時間內的日志(日志輸出需要有時間的才可以)
sed -n '/2021-10-18 08:00/,/2021-10-18 10:00/p' 20211018.log
輸出某一段時間包含“xiaohu”的行數
sed -n '/2021-10-18 08:00/,/2021-10-18 10:00/p' 20211018.log | grep -c "xiaohu"
將某段時間內的日志保存到一個新文件中
sed -n '/2021-10-18 08:00/,/2021-10-18 10:00/p' 20211018.log > newlog.log
awk命令
這個命令很強大,目前我也沒用到過,之后會單獨學習一下
