日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux中查看日志文件的正确姿势,求你别tail走天下了!

發(fā)布時(shí)間:2025/3/21 linux 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux中查看日志文件的正确姿势,求你别tail走天下了! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作為一個(gè)后端開發(fā)工程師,在Linux中查看查看文件內(nèi)容是基本操作了。尤其是通常要分析日志文件排查問題,那么我們應(yīng)該如何正確打開日志文件呢?對(duì)于我這種小菜雞來說,第一反應(yīng)就是 cat,tail,vi(或vim)了,是的,我曾經(jīng)用過好多次vim編輯器來查看日志文件(可恥)。

千萬不要使用vi命令來查看大文件內(nèi)容, 尤其對(duì)于那些幾十G的大文件。因?yàn)関i僅僅是一個(gè)編輯器(可以理解為windows中的記事本),使用vi命令后則會(huì)把文件所有內(nèi)容加載到內(nèi)存中,如果內(nèi)存不夠大的話,則可能會(huì)導(dǎo)致服務(wù)器癱瘓。

為了生成測(cè)試數(shù)據(jù),筆者抓心撓肝,東拼西湊,寫了一個(gè)生成測(cè)試文件的shell腳本,方便下文的命令演示,復(fù)制到linux命令行執(zhí)行即可。

#?生成10行測(cè)試數(shù)據(jù)(可根據(jù)需求自行修改) for?((i=1;i?<=?10;?i++));do?echo?"第$i行"?>>?test.txtif?[[??`expr?$i?%?2`?-eq?0?]]thenecho?-e??>>?test.txtfidone

直接查看文件內(nèi)容

查看整個(gè)文件的內(nèi)容的命令一共有三個(gè),cat/tac/nl,nl命令筆者用的比較少,所以此處就不再演示了,感興趣的小伙伴可以去百度一哈。

cat [-AbEnTv]

選項(xiàng)與參數(shù)-A?:相當(dāng)于-vET的整合, 可以列出一些特殊字符而不是空白而已-b?:列出行號(hào),進(jìn)針對(duì)非空白行做行號(hào)顯示,空白行不會(huì)標(biāo)記-E?:將結(jié)尾換行符$顯示出來-n?:打印出行號(hào),連同空白行也會(huì)有行號(hào),與-b的選項(xiàng)不同-T?: 將[tab]鍵以^I顯示出來-v?: 列出一些看不出來的特殊字符

范例1:查看test.txt文件的內(nèi)容

cat test.txt

范例2:查看test.txt文件的內(nèi)容, 并展示行號(hào)

cat -n test.txt

范例3: 不推薦使用cat查看大文件

cat -n test.txt

cat僅僅適合查看行數(shù)比較少的文件, 如果文件比較大則沒有什么意義了,文件會(huì)快速翻到最后一行。如果文件中有特殊符號(hào),比如[Tab], 換行等要顯示出來,就必須加上-A之類的選項(xiàng)。當(dāng)然cat也可以通過管道符配合more或less使用也可以達(dá)到比較好的效果。

tac(和cat打印順序相反)

tac學(xué)過之后筆者從來沒有實(shí)際應(yīng)用過,由于用的比較少,所以大家知道就行了。不過這個(gè)命令比較有意思,和cat拼寫相反,所以他們的打印順序也相反,將最后一行作為第一行輸出。范例1:倒敘查看文件的內(nèi)容

翻頁查看

more

more命令了解一下就行了,功能太少,筆者一般都用less命令。

按鍵/命令空格鍵(Space):向下翻頁回車(Enter):向下翻行/字符串:在當(dāng)前顯示的內(nèi)容(翻頁進(jìn)度位置),向下查找這個(gè)字符串關(guān)鍵字:f:立刻顯示文件名以及目前位置的行號(hào)q:?:退出當(dāng)前文件的瀏覽b或ctrl+b:往回翻頁范例1:翻行后,查看行號(hào)

less

less命令比more更加有彈性,可以前后翻頁,不止可以向上查找,也可以向下查找。按鍵/命令[pagedown]?:向下翻頁[pageup]?:向上翻頁/字符串:在當(dāng)前顯示的內(nèi)容(翻頁進(jìn)度位置),向下查找這個(gè)字符串關(guān)鍵字?字符串:向上查找字符串n?:重復(fù)前一個(gè)查找,與/或?有關(guān), 比如前一個(gè)命令是?表示向上查找,此時(shí)n會(huì)向上查找N: 反向的重復(fù)前一個(gè)查找g?:跳轉(zhuǎn)到當(dāng)前文件數(shù)據(jù)的第一行G?:跳轉(zhuǎn)到當(dāng)前文件數(shù)據(jù)的最后一行q?:退出當(dāng)前文件的瀏覽

范例演示

數(shù)據(jù)截取

head

head命令用來提取文件的前n行,一般配合使用-n選項(xiàng)。當(dāng)指定的行數(shù)為負(fù)數(shù)-x時(shí),則會(huì)打印出除了后面x行的其他所有數(shù)據(jù)。范例1:查看前10行數(shù)據(jù)

head -n 10 test.txt
范例2(一共10000行,沒有空行):head -n -9989 test.txt

tail

從文件尾部截取數(shù)據(jù)。tail也是工作中最常用的命令,因?yàn)榭梢岳?f選項(xiàng),一直刷新獲取文件尾部最新數(shù)據(jù)。

選項(xiàng)與參數(shù)-n?: 查看后n行數(shù)據(jù),注意當(dāng)n后面值帶“+”號(hào)表示從第x行開始, 如 tail -n +1000 test.txt-f?: 展示文件后面范例1:查看尾部5行數(shù)據(jù)【tail -n 5 test.txt】

范例2:查看文件尾部數(shù)據(jù),并實(shí)時(shí)刷新數(shù)據(jù)

范例3:查看文件尾部5行數(shù)據(jù),并實(shí)時(shí)刷新數(shù)據(jù)

通用命令

管道:Shell 還有一種功能,就是可以將兩個(gè)或者多個(gè)命令(程序或者進(jìn)程)連接到一起,把一個(gè)命令的輸出作為下一個(gè)命令的輸入,以這種方式連接的兩個(gè)或者多個(gè)命令就形成了管道(pipe),管道命令用"|"來表示

范例:查看ll命令輸出的前10行

ll | head -n 3

grep?:命令用于查找文件里符合條件的字符串,這兩個(gè)命令也是linux中最常用的的,而在查看日志文件也通常會(huì)結(jié)合這兩個(gè)命令一起使用。

范例:查看文件文件中那些行包含‘999’

cat -n test.txt | grep '999'

>>?:?文件追加重定向命令,可以往文件末尾追加數(shù)據(jù),正如上文 echo "第$i行" >> test.txt。

范例:將一個(gè)文件的最后10行復(fù)制到helloworld.txt中

tail -n 10 >> helloworld.txt

wc文件字節(jié)數(shù),字?jǐn)?shù),行數(shù)查看wc [-clw] [文件...],-c或--bytes或--chars 只顯示Bytes數(shù)。-l或--lines 只顯示行數(shù)。-w或--words 只顯示字?jǐn)?shù)。范例:查看文件行數(shù)wc -l

案例實(shí)戰(zhàn)

案例1:打印日志文件中第11到20行。思路:首先獲取前20行,然后在獲取20行的后10行即可,需要使用管道命令。head -n 20 text.txt | tail -n 10

cat -n test.txt | head -n 20 | tail -n 10(如果需要顯示行號(hào))

總結(jié)

以上是生活随笔為你收集整理的Linux中查看日志文件的正确姿势,求你别tail走天下了!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。