溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

linux查詢?nèi)罩久钣心男?/h1>
發(fā)布時(shí)間:2022-02-23 11:06:26 來源:億速云 閱讀:115 作者:小新 欄目:web開發(fā)

這篇文章主要介紹linux查詢?nèi)罩久钣心男闹薪榻B的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

【背景】

排查線上環(huán)境問題,少不了去線上查日志。而使用什么命令,能快速準(zhǔn)確地查到我們需要查找地日志信息,也是我們需要掌握的一項(xiàng)技能。

【命令】

Linux查看命令有多種:tail,head,cat,tac,more

(一) tail 命令

tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]

參數(shù):
1)-f 循環(huán)讀取
2)-q 不顯示處理信息
3)-v 顯示詳細(xì)的處理信息
4)-c Number 從 Number 字節(jié)位置讀取指定文件
5)-n Number 從 Number 行位置讀取指定文件
6)-m Number 從 Number 多字節(jié)字符位置讀取指定文件,比方你的文件假設(shè)包括中文字,假設(shè)指定-c參數(shù),可能導(dǎo)致截?cái)?,但使?m則會(huì)避免該問題
7)-b Number 從 Number 表示的512字節(jié)塊位置讀取指定文件。
8)-k Number 從 Number 表示的1KB塊位置讀取指定文件。

上述命令中,都涉及到number,假設(shè)不指定,默認(rèn)顯示10行。Number前面可使用正負(fù)號(hào),表示該偏移從頂部還是從尾部開始計(jì)算。

應(yīng)用:
命令 含義
tail -f test.log 查看實(shí)時(shí)日志
tail -100f test.log 查看最后100行日志記錄
tail -n 10 test.log 查詢?nèi)罩疚膊孔詈?0行的日志
tail -n +10 test.log 查詢10行之后的所有日志
tail -fn 100 test.log 循環(huán)實(shí)時(shí)查看最后100行記錄

(二) head 命令

功能跟tail是相反的,tail是查看后多少行日志

命令 含義
head -n 10 test.log 查詢?nèi)罩疚募械那?0行日志
head -n -10 test.log 查詢?nèi)罩疚募俗詈?0行的其他所有日志

(三) cat 命令

功能
1)一次顯示整個(gè)文件。 cat filename
2)創(chuàng)建一個(gè)文件。 cat > filename
3)將幾個(gè)文件合并為一個(gè)文件。 cat file1 file2 > file

參數(shù):
1)-n 由1開始對(duì)所有輸出的行數(shù)編號(hào)
2)-b 和-n相似,只不過對(duì)于空白行不編號(hào)
3)-s 當(dāng)遇到有連續(xù)兩行以上的空白行,就代換為一行的空白行
4)-c<數(shù)目> 顯示的字節(jié)數(shù)
5)-n<行數(shù)> 顯示行數(shù)

應(yīng)用
1)cat test.log | tail -n 1000 #輸出test.log 文件最后1000行

2)cat -n test.log |grep “debug” #得到關(guān)鍵日志的行號(hào)

3)cat filename | tail -n +3000 | head -n 1000 #從第3000行開始,顯示1000行。即顯示3000~3999行

4)cat filename| head -n 3000 | tail -n +1000 #顯示1000行到3000行

5)cat -n textfile1 > textfile2 #把 textfile1 的檔案內(nèi)容加上行號(hào)后輸入 textfile2 這個(gè)檔案里

6)cat -b textfile1 textfile2 >> textfile3 #把 textfile1 和 textfile2 的檔案內(nèi)容加上行號(hào)(空白行不加)之后將內(nèi)容附加到 textfile3 里

7)cat error.log | grep -C 5 'nick' 顯示file文件里匹配foo字串那行以及上下5行
cat error.log | grep -B 5 'nick' 顯示foo及前5行
cat error.log | grep -A 5 'nick' 顯示foo及后5行

(四) tac 命令

功能
tac是將cat反寫過來,它的功能跟cat相反,cat是由第一行到最后一行連續(xù)顯示,而tac是由最后一行到第一行反向顯示。

(五) more 命令

功能
類似cat,不過以一頁一頁形式顯示?;局噶畎纯瞻祖I(space)往下一頁顯示,按返回鍵(back)往上一頁顯示,還有字符搜索功能(與vi相似)

參數(shù)
1)-num 一次顯示的行數(shù)

2)-d 提示使用者,在畫面下方顯示 [Press space to continue, &lsquo;q&rsquo; to quit.] ,如果使用者按錯(cuò)鍵,則會(huì)顯示 [Press &lsquo;h&rsquo; for instructions.] 而不是 &lsquo;嗶&rsquo; 聲

3)-l 取消遇見特殊字元 ^L 時(shí)會(huì)暫停的功能

4)-f 計(jì)算行數(shù)時(shí),以實(shí)際上的行數(shù),而非自動(dòng)換行過后的行數(shù)

5)-p 不以卷動(dòng)的方式顯示每一頁,而是先清除螢?zāi)缓笤亠@示內(nèi)容

6)-c 跟 -p 相似,不同的是先顯示內(nèi)容再清除其他舊資料

7)-s 當(dāng)遇到有連續(xù)兩行以上的空白行,就代換為一行的空白行

8)-u 不顯示下引號(hào) (根據(jù)環(huán)境變數(shù) TERM 指定的 terminal 而有所不同)

9)+/pattern 在每個(gè)文檔顯示前搜尋該字串(pattern),然后從該字串之后開始顯示

10)+num 從第 num 行開始顯示

應(yīng)用
如果我們查找的日志很多,打印在屏幕上不方便查看, 使用more和less命令,
如: cat -n test.log |grep "條件" |more 這樣就分頁打印了,通過點(diǎn)擊空格鍵翻頁

命令 含義
more -s test.log 逐頁顯示日志,如有連續(xù)兩行以上空白行則以一行空白行顯示
more +20 test.log 從第 20 行開始顯示日志內(nèi)容

(六) grep 命令

功能:
上面幾個(gè)命令都是用在查找文件方便,而在查找文件時(shí),我們往往需要通過某些關(guān)鍵字查找,grep命令就可以幫助我們實(shí)現(xiàn)快速查找。

參數(shù): 
[options]主要參數(shù):
-c:只輸出匹配行的計(jì)數(shù)。
-I:不區(qū)分大 小寫(只適用于單字符)。
-h(huán):查詢多文件時(shí)不顯示文件名。
-l:查詢多文件時(shí)只輸出包含匹配字符的文件名。
-n:顯示匹配行及 行號(hào)。
-s:不顯示不存在或無匹配文本的錯(cuò)誤信息。
-v:顯示不包含匹配文本的所有行。
pattern正則表達(dá)式主要參數(shù):
: 忽略正則表達(dá)式中特殊字符的原有含義。
^:匹配正則表達(dá)式的開始行。
$: 匹配正則表達(dá)式的結(jié)束行。
<:從匹配正則表達(dá) 式的行開始。

:到匹配正則表達(dá)式的行結(jié)束。
[ ]:單個(gè)字符,如[A]即A符合要求 。
[ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的單個(gè)字符。

  • :有字符,長度可以為0。

操作:
1、或操作
grep -E '123|abc' filename // 找出文件(filename)中包含123或者包含abc的行
egrep '123|abc' filename // 用egrep同樣可以實(shí)現(xiàn)
awk '/123|abc/' filename // awk 的實(shí)現(xiàn)方式

2、與操作
grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。

3、其他操作
grep -i pattern files :不區(qū)分大小寫地搜索。默認(rèn)情況區(qū)分大小寫,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整個(gè)單詞,而不是字符串的一部分(如匹配&lsquo;magic&rsquo;,而不是&lsquo;magical&rsquo;),
grep -C number pattern files :匹配的上下文分別顯示[number]行,

應(yīng)用
1)more joint.log | grep &lsquo;60007746&rsquo; #根據(jù)某退貨號(hào)查詢?nèi)罩?/p>

很多時(shí)候,我們都需要看到上下幾行的日志,可以通過加相關(guān)參數(shù)實(shí)現(xiàn)。

2)more joint.log | grep -5 &lsquo;60007746&rsquo; #打印匹配行的前后5行

3)more joint.log | grep -C 5 &lsquo;60007746&rsquo; #打印匹配行的前后5行

4)more joint.log | grep -A 5 &lsquo;60007746&rsquo; #打印匹配行的后5行

5)more joint.log | grep -B 5 &lsquo;60007746&rsquo; #打印匹配行的前5行

6)cat -n umltech-scan |grep 'reqBody' #在日志文件中查找某個(gè)字符串:cat -n 日志文件 |grep '查找內(nèi)容',如果內(nèi)容太多可以通過后面加more,通過空格查看下一頁

7)cat -n umltech-scan |grep 'reqBody'>/test #將按條件查詢到的日志內(nèi)容保存到文件中:cat -n 日志文件|grep '查找內(nèi)容' >保存位置

(七)sed

應(yīng)用
sed -n '5,10p' filename 這樣你就可以只查看文件的第5行到第10行。

sed -n '/2018-02-06 15:05:38/,/2018-02-06 15:20:38/p' umltech-scan
按時(shí)間段查詢?nèi)罩?sed -n '/開始時(shí)間/,/結(jié)束時(shí)間/p' umltech-scan,時(shí)間格式為"yyyy-mm-dd hh:mm:ss"

(八)vi

應(yīng)用
查找文件內(nèi)容關(guān)鍵字方法:
先 執(zhí)行命令>: vi filename
然后輸入>: /查找字符串
按n查找下一個(gè),按N(大寫)查找上一個(gè)

以上是“l(fā)inux查詢?nèi)罩久钣心男边@篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI