開發(fā)必備快速定位排查日志?9?大類命令詳解
時(shí)間:2021-09-17 15:46:28
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
[導(dǎo)讀]一、cat命令:二、more命令:三、less命令:四、head命令:五、tail命令:六、tac命令:七、echo命令:八、grep命令:九、sed命令:混合命令:附加:當(dāng)日志存儲文件很大時(shí),我們就不能用vi直接去查看日志了,就需要Linux的一些內(nèi)置命令去查看日志文件.系統(tǒng)L...

- 一、cat命令:
- 二、more命令:
- 三、less命令:
- 四、head命令:
- 五、tail命令:
- 六、tac命令:
- 七、echo命令:
- 八、grep命令:
- 九、sed命令:
- 混合命令:
- 附加:
當(dāng)日志存儲文件很大時(shí),我們就不能用 vi 直接去查看日志了,就需要Linux的一些內(nèi)置命令去查看日志文件.
系統(tǒng)Log日志位置:/var/log/message 系統(tǒng)啟動(dòng)后的信息和錯(cuò)誤日志,是Red Hat Linux中最常用的日志之一/var/log/secure 與安全相關(guān)的日志信息/var/log/maillog 與郵件相關(guān)的日志信息/var/log/cron 與定時(shí)任務(wù)相關(guān)的日志信息/var/log/spooler 與UUCP和news設(shè)備相關(guān)的日志信息/var/log/boot.log 守護(hù)進(jìn)程啟動(dòng)和停止相關(guān)的日志消息
一、cat命令:
參數(shù):
-n?或?--number?由?1?開始對所有輸出的行數(shù)編號
-b?或?--number-nonblank?和?-n?相似,只不過對于空白行不編號
-s?或?--squeeze-blank?當(dāng)遇到有連續(xù)兩行以上的空白行,就代換為一行的空白行
-v?或?--show-nonprinting
-E?--show-ends?在每行結(jié)束處顯示?$
-e?--等價(jià)于-vE
cat主要有三大功能:
1. $ cat filename 一次顯示整個(gè)文件。
2. $ cat > filename 從鍵盤創(chuàng)建一個(gè)文件。(只能創(chuàng)建新文件,不能編輯已有文件)
3.?$?cat?filename1?filename2?>?filename?將幾個(gè)文件合并為一個(gè)文件(如果原本file文件中有內(nèi)容,會(huì)被覆
???蓋掉)?蓋掉)?
?
例:
把?file1?的內(nèi)容加上行號后輸入到?file2?這個(gè)文件里??
cat?-n?filename1?>?filename2
把?file1?和?file2?的內(nèi)容加上行號(空白行不加)之后將內(nèi)容追加到?file3?里
cat?-b?filename1?filename2?>>?filename3??
?
把test.txt文件扔進(jìn)垃圾箱,賦空值test.txt
cat?/dev/null?>?/etc/test.txt???
注意:>意思是創(chuàng)建,>>是追加。千萬不要弄混了。
二、more命令:
more 命令是一個(gè)基于vi編輯器文本過濾器,它以全屏幕的方式按頁顯示文本文件的內(nèi)容,支持vi中的關(guān)鍵字定位操作。
該命令一次顯示一屏文本信息,滿屏后停下來,以百分比的形式,以上下翻頁,以上下行移動(dòng)顯示查看日志并且在屏幕
的底部給出一個(gè)提示信息,從開始至當(dāng)前己顯示的該文件的百分比:–More–(XX%)
?**按鍵????????????????????????????????????????????????????**說明**
?按Space鍵:顯示文本的下一屏內(nèi)容。
?按B鍵:顯示上一屏內(nèi)容。
?按Enter鍵:只顯示文本的下一行內(nèi)容。
?按斜線符:接著輸入一個(gè)模式,可以在文本中尋找下一個(gè)相匹配的模式。
?按H鍵:顯示幫助屏,該屏上有相關(guān)的幫助信息。
?按Q鍵:退出more命令
三、less命令:
less 命令查看日志,和more命令類似,只不過less支持上下鍵前后翻閱文件。
四、head命令:
參數(shù):
-q?隱藏文件名
-v?顯示文件名
-c?顯示字節(jié)數(shù)
-n?顯示的行數(shù)
從文本文件的頭部開始查看,head 命令用于查看一個(gè)文本文件的開頭部分。
例:
head?filename?或?head?-n?10?顯示文本文件?file?的前十行內(nèi)容,然后退出命令
head?-n?20?filename?顯示文本文件?file?的前二十行內(nèi)容
head?-n?-10?filename?顯示文本文件除了最后10行的其他所有文本文件信息
五、tail命令:
tail?命令用于顯示文本文件的末尾內(nèi)容(默認(rèn)10行,相當(dāng)于增加參數(shù)?-n?10),并且實(shí)時(shí)不斷有內(nèi)容被打印出來,
??若想中斷進(jìn)程,使用命令?Ctrl-C
參數(shù):
tail?[?-f?]?[?-c?Number?|?-n?Number?|?-m?Number?|?-b?Number?|?-k?Number?]?[?File?]?
參數(shù)解釋:
-f 該參數(shù)用于監(jiān)視File文件增長。
-c?Number?從?Number?字節(jié)位置讀取指定文件?
-n Number 從 Number 行位置讀取指定文件。
-m?Number?從?Number?多字節(jié)字符位置讀取指定文件,比方你的文件假設(shè)包括中文字,假設(shè)指定-c參數(shù),可能導(dǎo)致
???截?cái)?,但使?m則會(huì)避免該問題。
-b Number 從 Number 表示的512字節(jié)塊位置讀取指定文件。
-k Number 從 Number 表示的1KB塊位置讀取指定文件。
File?指定操作的目標(biāo)文件名稱?
上述命令中,都涉及到number,假設(shè)不指定,默認(rèn)顯示10行。Number前面可使用正負(fù)號,表示該偏移從頂部還是從尾
??部開始計(jì)算。
tail 可運(yùn)行文件一般在/usr/bin/以下。
tail?-f?filename?監(jiān)視filename文件的尾部內(nèi)容(默認(rèn)10行,相當(dāng)于增加參數(shù)?-n?10)
tail?-100f?filename?監(jiān)視filename文件的尾部內(nèi)容(默認(rèn)從底部往前100行,相當(dāng)于增加參數(shù)?-n?100)
tail?-n?20?filename?顯示filename最后20行
tail?-r?-n?10?filename?逆序顯示filename最后10行
六、tac命令:
tac?(反向查看日志,會(huì)打開整個(gè)文件,倒序顯示,不常用)
tac 是將 cat 反寫過來,所以他的功能就跟 cat 相反。
cat?是由第一行到最后一行連續(xù)顯示在屏幕上,而?tac?則是由最后一行到第一行反向在螢?zāi)簧巷@示出來
七、echo命令:
echo?命令用來在標(biāo)準(zhǔn)輸出上顯示一段字符
echo?[?-n ]?字符串其中選項(xiàng)n表示輸出文字后不換行;字符串能加引號,也能不加引號
echo?"the?echo?command?test!"
echo?"the?echo?command?test!">filename?輸出內(nèi)容到文件
用?echo?命令輸出加引號的字符串時(shí),將字符串原樣輸出
用?echo?命令輸出不加引號的字符串時(shí),將字符串中的各個(gè)單詞作為字符串輸出,各字符串之間用一個(gè)空格分割
八、grep命令:
grep?同時(shí)滿足多個(gè)關(guān)鍵字和滿足任意關(guān)鍵字,是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹?
??配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達(dá)式版本,顯示完自動(dòng)退
??出命令
grep?[options]??
參數(shù):??
[options]參數(shù):
-c:只輸出匹配行的計(jì)數(shù)
-I:不區(qū)分大?小寫(只適用于單字符)
-h:查詢多文件時(shí)不顯示文件名
-l:查詢多文件時(shí)只輸出包含匹配字符的文件名
-n:顯示匹配行及?行號
-s:不顯示不存在或無匹配文本的錯(cuò)誤信息
-v:顯示不包含匹配文本的所有行
-A:?顯示匹配行及前面多少行,?如:?-A3,?則表示顯示匹配行及前3行
-B:?顯示匹配行及后面多少行,?如:?-B3,?則表示顯示匹配行及后3行
-C:?顯示匹配行前后多少行,?如:?-C3,?則表示顯示批量行前后3行
pattern正則表達(dá)式主要參數(shù):
:忽略正則表達(dá)式中特殊字符的原有含義
^:匹配正則表達(dá)式的開始行
$:?匹配正則表達(dá)式的結(jié)束行
<:從匹配正則表達(dá)?式的行開始
>:到匹配正則表達(dá)式的行結(jié)束
[?]:單個(gè)字符,如[A]即A符合要求?
[?-?]:范圍,如[A-Z],即A、B、C一直到Z都符合要求?
。:所有的單個(gè)字符
-?:有字符,長度可以為0
例
grep?-n?"word"?filename?查看文件包含條件的日志,全部顯示出來(單引號或者雙引號都可以,不區(qū)分)
grep?-E?"word1|word2|word3"?filename?滿足任意條件(word1、word2和word3之一)將匹配的內(nèi)容全部打
??印出來
grep?word1?filename?|?grep?word2?|grep?word3?必須同時(shí)滿足三個(gè)條件(word1、word2和word3)才匹配
??多管道,多次篩選
使用正則表達(dá)式?-E?選項(xiàng)
grep?-E?"[1-9] "?或?egrep?"[1-9] "
grep?-A100?'word'?filename?顯示匹配行往后100行
grep?-B100?'word'?filename?顯示匹配行往前100行
grep?-C100?'word'?filename?顯示匹配行往前往后100行
九、sed命令:
sed?本身是一個(gè)管道命令,主要是以行為單位進(jìn)行處理,可以將數(shù)據(jù)行進(jìn)行替換、刪除、新增、選取等特定工作
參數(shù)
-n∶使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN的資料一般都會(huì)被列出到螢?zāi)簧?。但如果?br>??上?-n 參數(shù)后,則只有經(jīng)過sed 特殊處理的那一行(或者動(dòng)作)才會(huì)被列出來。
-p ∶列印,亦即將某個(gè)選擇的資料印出。通常 p 會(huì)與參數(shù) sed -n 一起運(yùn)作~
-s ∶取代,可以直接進(jìn)行取代的工作哩!通常這個(gè) s 的動(dòng)作可以搭配正規(guī)表示法!例如 1,20s/old/new/g
例
sed?-n?'5,10p'?filename?只查看文件的第5行到第10行
sed?-n?'/2019-01-04?21:30:00/,/2019-01-04?22:30:30/p'?filename?只查看文件包含時(shí)間段的區(qū)間內(nèi)容
混合命令:
tail?-n? 92表示查詢92行之后的日志
tail?filename?-n?300?-f?查看底部即最新300條日志記錄,并實(shí)時(shí)刷新
tail?-f?filename?|?grep?-E?'word1|word2|word3'?實(shí)時(shí)打印出匹配規(guī)則的文件內(nèi)容(注意或符號前后最好
??不要有空格)
cat?-n?filename?|grep?“地形”?|?more?得到關(guān)鍵日志的行號
cat?-n?filename?|tail?-n? 92|head?-n?20
grep?'nick'?|?tail?filename?-C?10?查看字符‘nick’前后10條日志記錄,?大寫C
head?-n?20?則表示在前面的查詢結(jié)果里再查前20條記錄
附加:
vi?filename?查看或編輯文件
查找文件內(nèi)容關(guān)鍵字方法:
先?執(zhí)行命令>:vi ???? filename
然后輸入>:???/查找字符串?
按n查找下一個(gè)
例
如查找nohup.out日志文件的error關(guān)鍵字:
執(zhí)行命令:vi nohup.out
輸入以下回車:/error
按n查找下一個(gè)
將實(shí)時(shí)日志打印到指定文件:
例
將實(shí)時(shí)日志打印到文件newlog.log內(nèi),方便查找
執(zhí)行命令:tail ?-f nohup.out ??>newlog.log
備注:newlog.log文件可以不存在,命令執(zhí)行時(shí)會(huì)自動(dòng)新建