偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Linux中的日志分析利器:ail grep awk

系統(tǒng) Linux
登錄服務(wù)器,查詢?nèi)罩疚募ㄎ幌嚓P(guān)日志,并分析原因。所以在Linux服務(wù)器上進(jìn)行日志查詢,成為了必備的技能。

一個(gè)日志查詢分析的例子

項(xiàng)目發(fā)布上線后,接下來(lái)需要做什么?開(kāi)Party,慶祝項(xiàng)目上線。但是Party開(kāi)到一半,服務(wù)運(yùn)行出了點(diǎn)問(wèn)題。領(lǐng)導(dǎo)要你馬上調(diào)查原因并給出合適的解決辦法。項(xiàng)目才剛上線,日志監(jiān)控系統(tǒng)都還沒(méi)來(lái)得及完善。你該怎么處理?

登錄服務(wù)器,查詢?nèi)罩疚募ㄎ幌嚓P(guān)日志,并分析原因。所以在linux服務(wù)器上進(jìn)行日志查詢,成為了必備的技能。

于是你登上了服務(wù)器,找到了對(duì)應(yīng)服務(wù)的日志文件,輸入了:

tail -f <xx-service>.log

但這只能看最新的日志輸出,不能看到過(guò)去的某個(gè)時(shí)間點(diǎn)的日志,或者根據(jù)某些特定的字符進(jìn)行篩選。

于是你輸入了命令:

tail -n 20000 <xx-service>.log | grep "ERROR" -A 50 -B 50

查看了最近20000行中出現(xiàn)ERROR的日志并包括其前50行和后50行。

一頓操作后你調(diào)查出了具體原因,并給出了問(wèn)題的解決方法。但是你想調(diào)查一下問(wèn)題出現(xiàn)的頻次:

tail -n 2000 <xx-service>.log | grep 'ERROR' | awk '{count++;} END {print "error count:", count}'

隨后你分析出了出現(xiàn)問(wèn)題的更深層次的原因,并出具了根本原因分析報(bào)告。

在不具備完善的ELK日志收集分析系統(tǒng)的情況下,日志查詢分析只能依靠Linux基礎(chǔ)的日志查詢分析工具:tail, grep, awk等命令。

tail命令

tail命令用于查看日志文件,常見(jiàn)用法如下:

顯示文件的最后10行:

tail <file name>

顯示文件的最后200行:

tail -n 200 <file name>

顯示文件第200行開(kāi)始到末尾的內(nèi)容:

tail -n +200 <file name> 

循環(huán)讀取文件:

tail -f <file name>

更多tail命令相關(guān)的信息,可以通過(guò)tail --help命令查看。

grep命令

grep命令用于在一個(gè)或多個(gè)輸入文件中,搜索與正則匹配的行,并將匹配的行標(biāo)準(zhǔn)輸出。

在日志查詢中,通常用來(lái)將tail的輸出結(jié)果進(jìn)行過(guò)濾日志,常見(jiàn)用法如下:

(1) 顯示最近2000行日志中,包含Error(區(qū)分大小寫(xiě))的日志行如包含SystemError,InputError, Error等單詞的行

tail -n 2000 <file name> | grep 'Error' 

(2) 顯示最近2000行日志中,包含Error單詞(區(qū)分大小寫(xiě))的日志行:

tail -n 2000 <file name> | grep -w 'Error' 

-w表示匹配單詞。

(3) 如果不區(qū)分大小寫(xiě),則可以用以下命令:

tail -n 2000 <file name> | grep -wi 'Error'

-i參數(shù)則表示不區(qū)分大小寫(xiě)。

(4) 如果需要顯示不包含Error的日志行,則可以用以下命令:

tail -n 2000 postman.log | grep -wiv 'Error'

-v表示對(duì)匹配的條件取反.

(5) 如果需要進(jìn)行正則匹配則可以加入-e參數(shù),-E參數(shù)則表示擴(kuò)展正則匹配

tail -n 2000 postman.log | grep -e '.*Error.*'  
tail -n 2000 postman.log | grep -E '.*Error.*|.*error.*'

(6) -A參數(shù)可以包含匹配行的前n行,-B參數(shù)則包含匹配行的后n行,上文的提到的命令

tail -n 20000 <xx-service>.log | grep "ERROR" -A 50 -B 50

則表示匹配包含ERROR字符的行,以及前50行和后50行。

更多grep命令相關(guān)的信息,也可以通過(guò)grep --help命令查看。

awk命令

awk是一個(gè)文本處理工具,主要用于數(shù)據(jù)掃描,過(guò)濾,統(tǒng)計(jì)匯總等。

awk基本語(yǔ)法則是:

awk '<pattern> {<action>} <pattern> {<action>}...'

上面提到的一個(gè)關(guān)于awk的命令則是統(tǒng)計(jì)了一下日志中出現(xiàn)ERROR字符的行數(shù)。

tail -n 2000 <xx-service>.log | grep 'ERROR' | awk '{count++;} END {print "error count:", count}'

更簡(jiǎn)單的實(shí)現(xiàn)方式則可以通過(guò)awk的內(nèi)置變量實(shí)現(xiàn),如列出ls命令輸出的結(jié)果行數(shù):

ls | awk 'END{print NR}'

END是awk中的一個(gè)關(guān)鍵字,后面接的代碼塊只會(huì)在讀取完所有數(shù)據(jù)記錄最后執(zhí)行一次。與之相反的則是BEGIN,后面接的代碼塊只會(huì)在讀取數(shù)據(jù)記錄前執(zhí)行一次。

awk是一個(gè)十分強(qiáng)大的文本分析工具,如果有日志分析需求,awk足以應(yīng)對(duì)日常所需。更多關(guān)于awk的教程可以自行在網(wǎng)上搜索相關(guān)資料,或者查看官網(wǎng)教程:https://www.gnu.org/software/gawk/manual/html_node/index.html

總結(jié)

總之,基于linux的日志查詢分析,結(jié)合tail、grep、awk這三個(gè)命令的運(yùn)用,就完全滿足日常的日志分析需求了。tail控制日志查找范圍,grep進(jìn)行關(guān)鍵詞篩選,awk用于分析統(tǒng)計(jì)。

責(zé)任編輯:趙寧寧 來(lái)源: FrenziedJavaLand
相關(guān)推薦

2013-09-05 09:37:49

2025-05-12 08:35:00

Linux文本處理工具運(yùn)維

2025-02-17 15:06:07

2019-08-20 14:29:45

grepsedawk

2019-03-21 14:30:15

Linux文本分析命令

2025-06-25 07:08:09

grepsedawk

2017-03-31 14:05:26

Linux正則表達(dá)式基礎(chǔ)知識(shí)

2024-12-18 16:53:13

ncduLinux磁盤分析

2025-04-03 03:55:00

2015-08-03 15:48:22

Linux日志

2012-05-11 10:10:47

Linuxgrep

2023-11-30 12:03:06

linuxAwk

2016-12-23 10:56:34

linuxshellawk

2016-10-24 09:37:51

系統(tǒng)日志日志分析

2013-11-13 13:55:16

Linux命令grep

2021-03-15 07:39:48

LinuxAwk 語(yǔ)言

2018-09-28 09:00:00

LinuxTCPflow網(wǎng)絡(luò)流量

2021-03-29 10:10:15

Linuxgrep

2019-11-06 16:40:31

awkLinux文本分析工具

2010-01-27 09:58:59

Linuxunix程序日志
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)