因為在生產環境會遇到很多問題,那麼最快的定位方式莫過於去看日誌,我們都知道伺服器每天會產生大量的日誌,那麼如何快速的定位也就是最關鍵的。 本文介紹六種查看日誌的命令: 、`head cat more less sed`。 一、 1.1 命令功能 命令從指定點開始將文件寫到標準輸出。 1.2 命令格式 ...
因為在生產環境會遇到很多問題,那麼最快的定位方式莫過於去看日誌,我們都知道伺服器每天會產生大量的日誌,那麼如何快速的定位也就是最關鍵的。
本文介紹六種查看日誌的命令:tail
、head
、cat
、more
、less
、sed
。
一、tail
1.1 命令功能
tail
命令從指定點開始將文件寫到標準輸出。
1.2 命令格式
tail[必要參數][選擇參數][文件]
1.3 命令參數
-f 迴圈讀取
-q 不顯示處理信息
-v 顯示詳細的處理信息
-c<數目> 顯示的位元組數
-n<行數> 顯示行數
-q, --quiet, --silent 從不輸出給出文件名的首部
-s, --sleep-interval=S 與-f合用,表示在每次反覆的間隔休眠S秒
1.4 使用實例
tail -n 10 file.log 查詢日誌尾部最後10行的日誌;
tail -n +10 file.log 查詢第10行之後的所有日誌;
tail -fn 100 file.log 迴圈實時查看最後100行記錄
tail
一般還會配合著grep
用
tail -fn 1000 file.log | grep '關鍵字'
- 如果查詢的數據量太大,
Ctrl + F
或者 空格鍵可以翻頁查看
tail -n 5000 file.log |more -1000
二、head
2.1 命令功能
head
跟tail
是相反,用來顯示檔案的開頭至標準輸出中,預設head
命令列印其相應文件的開頭10
行。
head -n 10 file.log 查詢日誌文件中的頭10行日誌;
head -n -10 file.log 查詢日誌文件除了最後10行的其他所有日誌;
2.2 命令格式
tail[必要參數][選擇參數][文件]
2.3 命令參數
參考tail
三、cat
3.1 命令功能
- 一次顯示整個文件:
cat filename
- 從鍵盤創建一個文件(只能創建新文件,不能編輯已有文件):
cat > filename
- 將幾個文件合併為一個文件:
cat file1 file2 > file
3.2 命令格式
cat [選項] [文件]...
3.3 命令參數
-A, --show-all 等價於 -vET
-b, --number-nonblank 對非空輸出行編號
-e 等價於 -vE
-E, --show-ends 在每行結束處顯示 $
-n, --number 對輸出的所有行編號,由1開始對所有輸出的行數編號
-s, --squeeze-blank 有連續兩行以上的空白行,就代換為一行的空白行
-t 與 -vT 等價
-T, --show-tabs 將跳格字元顯示為 ^I
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
3.4 使用實例
- 把
file1.log
的文件內容加上行號後輸入file2.log
這個文件里
cat -n file1.log file2.log
- 把
file1.log
和file2.log
的文件內容加上行號(空白行不加)之後將內容附加到file.log
里
cat -b file1.log file1.log file.log
- 把
file1.log
的文件內容加上行號後輸入file.log
這個文件里
cat -n file1.log > file.log
tac
是將cat
反寫過來,所以他的功能就跟cat
相反
四、more
4.1 命令功能
more
命令和cat
的功能一樣都是查看文件里的內容,但有所不同的是more
可以按頁來查看文件的內容,還支持直接跳轉行等功能。
4.2 命令語法
more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]
4.3 命令參數
+n 從笫n行開始顯示
-n 定義屏幕大小為n行
+/pattern 在每個檔案顯示前搜尋該字串(pattern),然後從該字串前兩行之後開始顯示
-c 從頂部清屏,然後顯示
-d 提示“Press space to continue,’q’ to quit(按空格鍵繼續,按q鍵退出)”,禁用響鈴功能
-l 忽略Ctrl+l(換頁)字元
-p 通過清除視窗而不是滾屏來對文件進行換頁,與-c選項相似
-s 把連續的多個空行顯示為一行
-u 把文件內容中的下畫線去掉
4.4 常用操作命令
Enter 向下n行,需要定義,預設為1行
Ctrl + F 向下滾動一屏
空格鍵 向下滾動一屏
Ctrl + B 返回上一屏
= 輸出當前行的行號
:f 輸出文件名和當前行的行號
V 調用vi編輯器
!命令 調用Shell,並執行命令
q 退出more
4.5 使用示例
- 顯示文件中從第
3
行起的內容
more +3 file.log
- 從文件中查找第一個出現
test
字元串的行,並從該處前兩行開始顯示輸出
more +/test file.log
- 設定每屏顯示行數
more -5 log2012.log
五、less
5.1 命令功能
less
與more
類似,使用less
可以隨意瀏覽文件,而more
僅能向前移動,不能向後移動,而 less
既可以向前移動,也可以向後移動。
5.2 命令格式
less [參數] 文件
5.3 命令參數
-b <緩衝區大小> 設置緩衝區的大小
-e 當文件顯示結束後,自動離開
-f 強迫打開特殊文件,例如外圍設備代號、目錄和二進位文件
-g 只標誌最後搜索的關鍵詞
-i 忽略搜索時的大小寫
-m 顯示類似more命令的百分比
-N 顯示每行的行號
-o <文件名> 將less 輸出的內容在指定文件中保存起來
-Q 不使用警告音
-s 顯示連續空行為一行
-S 行過長時間將超出部分捨棄
-x <數字> 將“tab”鍵顯示為規定的數字空格
5.4 常用操作命令
/字元串:向下搜索“字元串”的功能
?字元串:向上搜索“字元串”的功能
n:重覆前一個搜索(與 / 或 ? 有關)
N:反向重覆前一個搜索(與 / 或 ? 有關)
b 向後翻一頁
d 向後翻半頁
h 顯示幫助界面
Q 退出less 命令
u 向前滾動半頁
y 向前滾動一行
空格鍵 滾動一行
回車鍵 滾動一頁
[pagedown]: 向下翻動一頁
[pageup]: 向上翻動一頁
5.5 less
命令在查詢日誌時,一般流程是這樣的
less file.log
shift + G
命令到文件尾部 然後輸入?
加上你要搜索的關鍵字例如:?test
- 按
n
向上查找關鍵字 shift + n
反向查找關鍵字
六、sed
6.1 命令功能
這個命令可以查找日誌文件特定的一段 , 根據時間的一個範圍查詢,可以按照行號和時間範圍查詢
6.2 使用示例
- 按照行號:只查看文件的第
5
行到第10
行
sed -n '5,10p' file.log
- 按照時間段
sed -n '/2019-12-17 16:17:20/,/2019-12-17 16:17:36/p' file.log