cat日志 搜索_大日志,看我如何對付你

2206881b998ba2a92885a6d0cf8831c0.png

??????在服務器接口測試中,我們經常會和各種日志打交道。一旦測試時服務端出現了問題,而單憑服務端的日志又不能發現問題原因的時候,往往開發要向我們測試人員詢問客戶端這邊的情況,希望看看我們能不能提供一些有用信息,如錯誤返回內容,錯誤發生時間,哪些用例會出現問題等等。這時就需要我們來查找測試時的日志,從中篩選出有用的信息。

? ? ? 篩查日志這件事,根據情況不同,采用的方法也會有所不同。比如日志很小,至多幾千行這樣的情況,我們完全可以使用一般的文本編輯器打開,直接查找所需內容即可。而像一些“大型”日志,尤其是長時間穩定性測試所產生的日志,動輒可能會有幾個g,幾十g,再用編輯器打開顯然不夠現實。這時,我們可以采用其他的一些查找方法,在不打開日志文件的情況下,較為快速地進行篩選。下面我就來說說幾個經常會使用到的命令(方法)。

一、more/less 命令

? ? ? ?more和less命令在使用上十分相近,都是用分頁查看文本的方式,每次只顯示一定行的文本,避免像cat那樣被大量的文字快速刷屏,同時支持搜索,可以在文件中搜索某個關鍵詞并實現定位。more和less有一些細微不同的地方,體現在參數設置上。總體而言,less似乎更適合對于日志的篩查,可以進行向前或向后雙方向的搜索,并且可以按方向鍵逐行前后滾動,而more只支持向后查找和向后翻頁或滾動。

? ? ? ?基本命令格式:

more/less example.log

??????搜索關鍵詞方法:

??????輸入命令后按"/",輸入關鍵詞后回車即可定位至關鍵詞第一次出現的位置,此時按n鍵可切換至下一次出現的位置,使用less時,按N(shift或大寫鎖定+n)鍵返回上一次出現的位置。

????? ?優點:

????? ?可以自動定位關鍵詞出現的位置,并顯示關鍵詞前后的文本內容,使用起來比較方便。

????? ?缺點:

????? ?搜索速度較慢,文件特別大的話要等很久才能搜索到。

? ? ? ?應用舉例:

????? ?查看日志文件從某時刻開始的內容

????? ?首先使用more命令打開一個日志文件

more 2019-08-05_1.csv

? ? ??顯示結果如下:

e921efc73bf697d344e440c779d4ca99.png

? ? ?可以看到日志的內容很多,此時我們關注日志中的時間,比如我想查看從04:01:00 GMT開始的日志,那么就鍵盤輸入:

/04:01

? ? ? ?按下回車,就會自動切換至我們想要的位置:57deaf9554921693c08fa939a6fcf81e.png

? ? ? 可以看到,日志內容從04:01開始了。

二、grep?命令

? ? ? grep命令是linux下最好用的命令之一。grep用來篩選內容的速度應該是最快的,這點沒有之一,大到幾個g的文件,幾秒就可以完成對單一關鍵詞的篩取,可謂是查找大文件的“神器”,而且grep命令格式十分簡單,常用的搜索功能只需三個參數即可完成。

? ? ??基本命令格式:

grep?keyword?example.log

??????搜索關鍵詞方法:

? ? ?在keyword位置設置想要搜索的關鍵詞,按下回車,即可將所有包含該關鍵詞的行顯示出來。

? ? ? ?優點:

? ? ? ?快速,可批量篩選出含有關鍵詞的全部文本行。

???????缺點:

? ? ? ?如果關鍵詞在文本中出現較多,無法快速定位至某一次關鍵詞出現的位置,依然會出現刷屏效果。

? ? ??拓展應用:

??????在命令中添加-A,-B,-C參數,可分別獲取某關鍵詞出現位置后面、前面、前后n行的內容:

grep -A|B|C n keyword example.log

? ? ? ?應用舉例:

????? ?查看日志文件某時刻起向后10行的內容

????? ?使用如下命令:

grep -A 10 '04:01:41' 2019-08-05_1.csv

? ? ? 結果顯示:

c00aa95effc6216ac16c5be904d43150.png

? ? ?可以看到,從日志中成功篩選出了04:01:41 GMT時刻后面10行的日志內容,比more/less命令搜索速度快了不少,而且內容更加簡潔,只包含這部分的內容信息。

三、head/tail?命令

? ? ? head和tail命令是功能近似而作用位置相反的兩個命令,head命令用來從開頭讀取文本,tail命令則是從尾部讀取文本。當我們不關注日志中間的一大坨內容,只關注開頭或結尾的部分內容時,head和tail命令可以說是最好的解決方案。

? ? ? 基本命令格式:

head/tail?-n example.log

? ? ? 使用方法:

? ? ? 設置需要從文件開頭/結尾查找的行數(n),即可顯示對應結果。

? ? ? ?優點:

? ? ? ?方便實用,尤其是tail,可以從尾部讀取文件。

???????缺點:

? ? ? ?單獨使用不能查找關鍵詞。

? ? ??拓展應用:

? ? ?1、head/tail與grep命令結合使用

? ? ??如果需要從文件開頭或結尾一定范圍內查找關鍵詞,那么head/tail與grep結合使用就再方便不過了,使用管道符連接兩個命令即可:

head/tail?-n?example.log |?grep?keyword

? ? ??反過來,也可以獲取含有某關鍵詞所有行中的前/后n個:

grep?keyword?example.log |?head/tail?-n

??????2、tail?-f 命令

? ? ? ?在測試過程中,我們有時可能需要監測一下當前日志的輸出情況,而由于日志在測試程序啟動時已經定向到了某個文件,沒有給到標準輸出,這時我們可以使用tail -f這個十分簡便的命令,獲取和日志“上屏”相似的效果,隨著日志文件的不斷更新,該命令也會將更新的內容給到標準輸出,同時不影響日志文件的記錄:

tail?-f?example.log

? ? ? 此外,該命令結合grep使用,更可以獲得實時篩選日志信息的功能,將簡化版、篩取版的日志記錄或輸出。

? ? ???應用舉例:

????? ?查看日志文件前1000行中,測試的時間記錄

? ? ? ?使用如下命令:

head?-1000?2019-08-05_1.csv?|?grep?date

? ? ? 結果顯示:

f00a9b56d4c895182e3c5ce2df944d9c.png

???? ?可以看到,這樣準確從日志中篩選出了時間記錄。

? ? ? 如此,我們還可以進一步拓展命令,利用wc -l來統計時間記錄的個數,完整命令如下:

head?-1000?2019-08-05_1.csv?|?grep?date?|?wc -l

? ? ?結果顯示:

a8a8e0e162104fee23ffc9902d8dd497.png

? ???可以看到,一共有31個時間記錄。

結束語

??????好了,以上就是本期介紹的幾個在日志篩選方面的實用命令,掌握了這些命令,從此可以不再懼怕那些個大文件了。

73245895de34dc1f1fad5d82e8a88a94.png

有任何想說的話,都可以發送內容到“搜狗測試”公眾號,我們一起聊聊~

6320377c6b0ffc91cf7b02521727f0e8.png5fc826489b6d3095d2e2f6e019b1ef3d.png

歡迎添加我們的搜狗測試微信號,與我們一起聊聊測試。

e42b501a4c144ee5576a0569379664f4.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533674.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533674.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533674.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python編譯成dll文件_用vc生成可被python調用的dll文件

前提已經有.c 和.i文件 用swid編譯了.i文件生成了wrap.c文件和.py文件 vc創建dll工程 將.h加入到頭文件中.c文件和wrap.c文件添加到源文件中 將.i文件添加到工程目錄下 Tools->Options->Directories中修改include 和lib 添加python里的include 和libs 把\libs\python27.l…

加載gif動圖_GIF生成神器——ScreenToGif

每次需要做一個動圖展示時,總是感覺很頭疼。截圖吧,需要的圖片太多;錄視頻吧,文件太大;做動圖吧,太麻煩。今天推薦的這個軟件或許能夠解決大家這個困惑,今天推薦的是動圖生成神器——ScreenToGi…

vue底部選擇器_vue實現動態顯示與隱藏底部導航的方法分析

vue實現動態顯示與隱藏底部導航的方法分析本文實例講述了vue實現動態顯示與隱藏底部導航的方法。分享給大家供大家參考,具體如下:在日常項目中,總有幾個頁面是要用到底部導航的,總有那么些個頁面,是不需要底部導航的&a…

java 修改最大nio連接數_關于java流的幾個概念:IO、BIO、NIO、AIO,有幾個人全知道?...

關于同步、阻塞的知識我之前的文章有介紹,所以關于流用到這些概念與之前多線程用的概念一樣。下面具體來看看java中的幾種流IO/BIOBIO就是指IO,即傳統的Blocking IO,即同步并阻塞的IO。這也是jdk1.4之前的唯一選擇,依賴于ServerSocket實現&am…

python神秘的魔法函數_python魔法函數

一、參考二、構造和初始化2.1 __new__在對象實例化過程中最先調用的方法是__new__, 該方法接收參數為類,然后將其他參數,傳遞給__init__, 該魔法函數比較少見,可以使用其,創建單例類; __new__方法是一個類方法,需要攜帶…

python掃雷 廣度優先_廣度優先搜索(BFS)解題總結

定義 廣度優先搜索算法(Breadth-First-Search),是一種圖形搜索算法。 簡單的說,BFS是從根節點開始,沿著樹(圖)的寬度遍歷樹(圖)的節點。 如果所有節點均被訪問,則算法中止。 BFS同樣屬于盲目搜索。 一般用隊…

python默認參數陷阱_python默認參數陷阱

0|1陷阱?學過函數的人一定聽說過函數的默認參數,關于函數的默認參數,請看以下的例子:def extendList(val, lst[]):lst.append(val)return lstlist1 extendList(10)list2 extendList(123, [])print(list1 %s % list1)print(list…

python裁剪圖片并保存_python – 如何從圖像中剪切輪廓并將其保存到新文件中

大家好,這是我的第一個問題所以請保持溫和.我有一個計算機視覺領域的項目,我是新的,我會很感激一些幫助.我有一個pcb的圖像,我的(首先)任務是從背景中切斷電路板并將其保存到新文件.如果結果只是沒有灰色背景的普通pcb,那就沒問題了. 我到目前為止嘗試的是,首先使用閾值將圖像轉…

opencv如何把一個矩陣不同列分離開_學習OPEN_CV

OpenCv中文論壇精華地址http://www.opencv.org.cn/index.php/User:Ollydbg23http://sivp.sourceforge.net/(sivp)一、基礎操作1. 數據類型 數據結構了解圖像相關:cvArr cvMat IplImage數據數組的維數, 與數據的通道數 見P46 (76)2. 常見的矩陣操作熟悉3…

python文件合并_用Python 將兩個文件的內容合并成一個新的文件.

一個文件的內容是:IntroductiontoProgramming,NetworkingFundamentals,InternetworkingTechnologies,PlatformTechnologies,InformationTechnologyforUsers,ComputerForensics,Enterpr... 一個文件的內容是: Introduction to Programming, Networking Fundamentals, Internetwo…

flash代碼_Flash如何對制作文件進行優化

對FLASH進行優化分為兩方面,一方面是代碼上的優化,主要是通過優化提高FLASH性能,降低CPU占用和內存使用。另一方面是資源的優化,這方面的優化是為了減小編譯后的文件大小以及制作文件的大小,因為如果不進行相應的優化&…

潛流式濕地計算_人工濕地計算書

人工濕地計算書1、尾水提升泵房集水池基本參數集水池設計規模為30000m3/d,約折合1250m3/h,按水力停留時間HRT為0.25 h計,集水井有效容積應為312.5 m3,考慮到與污水廠原有排污管道相契合,集水設計尺寸為:LBH…

deepin系統轉為windows_windows系統下安裝深度系統deepin

前期準備DiskGenius(用來擴展分區)deepin-20-amd64.iso(深度系統鏡像文件)相關文件下載首先下載安裝時要用的工具,分別為:DiskGenius , UltraISODiskGenius是一款磁盤工具,創建系統分區。UltraISO是用來打開系統光盤鏡像文件工具。Win8/8.1/10無需下載Ul…

c3等待加載樣式 vue_Vue.js__簡易加載等待動畫

Vue.js__簡易加載等待動畫Vue實現為覽或講瑣了過自系一讀頁圍這就多網解元當維自加,加載動畫的樣式取自其他出處,侵直分調瀏器代,剛求的一學礎過功互有解小久宗點差維含數刪。將Vue屬性覽或講瑣了過自系一讀頁圍這就多網解元當維和方法復制到…

軟件開發模型_QT開發(二十三)——軟件開發流程

一、軟件開發流程簡介軟件開發流程是通過一系列步驟保證軟件產品的順利完成,是軟件產品在生命周期內的管理學。軟件開發流程的本質是軟件開發流程與具體技術無關,是開發團隊必須遵守開的規則。二、常見軟件開發流程模型常見的軟件開發流程模型包括即興模…

python循環語句for計數_Bash For循環(遞增計數)與for循環用法詳解

先來看for循環的例子&#xff1a;用Bash Shell的for循環&#xff0c;每次遞增數是500。復制代碼 代碼示例:#!/bin/bash##每次遞增的數ADD_NUM500#遞增1的話取消下行注釋&#xff0c;并相應的注釋另一句for的開頭的#for ((i1;i<29500;i))#遞增定義的數for ((i1;i<29500;i$…

python3.6.2用pyinstaller3.4報錯_OceanBase 2.2 版本體驗:用 BenchmarkSQL 跑 TPC-C

OB君&#xff1a;好消息&#xff01;「 OceanBase 2.2 版本 」正式上線官網啦&#xff01;&#xff08;點擊閱讀原文即可直接下載&#xff09;OceanBase 2.2版本是成功支撐2019年天貓雙11大促的穩定版本&#xff0c;同時也是用于TPC-C測試且榮登TPC-C性能榜首的版本。我們將在接…

hive窗口函數_Hive sql窗口函數源碼分析

在了解了窗口函數實現原理 spark、hive中窗口函數實現原理復盤 和 sparksql比hivesql優化的點(窗口函數)之后&#xff0c;今天又擼了一遍hive sql 中窗口函數的源碼實現&#xff0c;寫個筆記記錄一下。簡單來說&#xff0c;窗口查詢有兩個步驟&#xff1a;將記錄分割成多個分區…

容大打印機ip修改工具_M1芯片版Mac無法連接打印機怎么辦?

文末有優惠券在入手了M1芯片版MacBook Pro后&#xff0c;昨天我打算連接一下實驗室的打印機。這個打印機的型號是HP LaserJet Professional M1213nf MFP&#xff0c;在同一個局域網內通過搜索IP即可連接。在我的舊設備2015款MacBook Air上&#xff0c;很輕松就連接了打印機。可…

語音對講軟件_三款語音轉文字工具,語音輸入,高效轉換,準確率高

關于語音轉文字的軟件我在之前講了很多&#xff0c;有些人聽了也用了&#xff0c;效果不錯&#xff0c;有些人看了就忘了&#xff0c;主要是不知道用它干嘛&#xff0c;其實語音轉文字的軟件主要功能就是為了讓自己在寫作的時候可以減少時間&#xff0c;提高效率&#xff0c;其…