如何快速查看Linux日誌?

来源:https://www.cnblogs.com/vandusty/archive/2020/02/11/12295504.html
-Advertisement-
Play Games

因為在生產環境會遇到很多問題,那麼最快的定位方式莫過於去看日誌,我們都知道伺服器每天會產生大量的日誌,那麼如何快速的定位也就是最關鍵的。 本文介紹六種查看日誌的命令: 、`head cat more less sed`。 一、 1.1 命令功能 命令從指定點開始將文件寫到標準輸出。 1.2 命令格式 ...


因為在生產環境會遇到很多問題,那麼最快的定位方式莫過於去看日誌,我們都知道伺服器每天會產生大量的日誌,那麼如何快速的定位也就是最關鍵的。

本文介紹六種查看日誌的命令:tailheadcatmorelesssed

一、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 命令功能

headtail是相反,用來顯示檔案的開頭至標準輸出中,預設head命令列印其相應文件的開頭10行。

head -n  10  file.log   查詢日誌文件中的頭10行日誌;
head -n -10  file.log   查詢日誌文件除了最後10行的其他所有日誌;

2.2 命令格式

tail[必要參數][選擇參數][文件]

2.3 命令參數

參考tail

三、cat

3.1 命令功能

  1. 一次顯示整個文件:cat filename
  2. 從鍵盤創建一個文件(只能創建新文件,不能編輯已有文件):cat > filename
  3. 將幾個文件合併為一個文件: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.logfile2.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 命令功能

lessmore類似,使用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命令在查詢日誌時,一般流程是這樣的

  1. less file.log
  2. shift + G 命令到文件尾部 然後輸入 加上你要搜索的關鍵字例如:?test
  3. n 向上查找關鍵字
  4. 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

七、技術交流

  1. 風塵博客
  2. 風塵博客-掘金
  3. 風塵博客-博客園
  4. Github

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 流程式控制制是每種編程語言控制邏輯走向和執行次序的重要部分,流程式控制制可以說是一門語言的“經脈”。 Go語言中最常用的流程式控制制有if和for,而switch和goto主要是為了簡化代碼、降低重覆代碼而生的結構,屬於擴展類的流程式控制制。 if else(分支結構) if條件判斷基本寫法 Go語言中if條件判斷 ...
  • 本文主要介紹Go語言中切片(slice)及它的基本使用。 因為數組的長度是固定的並且數組長度屬於類型的一部分,所以數組有很多的局限性。 例如: func arraySum(x [3]int) int{ sum := 0 for _, v := range x{ sum = sum + v } ret ...
  • ASP .NET CORE 源碼地址:https://github.com/dotnet/ 下拉可以查找相應的源碼信息, 例如:查找 ASP .NET CORE Microsoft.Extensions.Hosting 源碼地址:https://github.com/dotnet/extension ...
  • 目 錄 1. 概述... 2 2. 平臺演示... 2 3. 控制端與iNeuKernel的交互協議... 3 4. 設備驅動實現控制業務... 4 5. 應用效果... 9 5.1 CS客戶端... 9 5.2 BS瀏覽器... 9 5.3 Linux環境測試... 10 5.4 視頻應用效果.. ...
  • 前面三章介紹了WPF資源系統,使用資源可在一個地方定義對象而在整個標記中重用他們。儘管可使用資源存儲各種對象,但使用資源最常見的原因之一是通過他們的保存樣式。 樣式是可應用於元素的屬性值集合。WPF樣式系統與HTML標記中的層疊樣式表(Cascading Style Sheet,CSS)標準擔當類似 ...
  • FTP的中文名稱是“文件傳輸協議”,是File Transfer Protocol三個英文單詞的縮寫。FTP協議是TCP/IP協議組中的協議之一,其傳輸效率非常高,在網路上傳輸大的文件時,經常採用該協議。 一個完整的FTP由FTP伺服器和FTP客戶端組成,客戶端可以將伺服器上的文件通過FTP協議下載... ...
  • NanUI是一個開放源代碼的.NET項目,它適用於希望使用HTML5 / CSS3等前端技術來構建Windows窗體應用用戶界面的.NET / .NET Core開發人員。這是NanUI 0.7版本的發佈公告。 ...
  • 我們都知道,文件有不同的編碼,例如我們常用的中文編碼有:UTF8、GK2312 等。 Windows 操作系統中,新建的文件會在起始部分加入幾個字元的首碼,來識別編碼。 例如,新建文本文件,寫入單詞 ,另存為 UTF8。 占 5 個位元組,但文本大小卻是 8 個位元組。(win7 系統下還是這樣的,wi ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...