我想現在許多人查日誌,剛開始的時候,都是直接使用grep命令,後面又接觸了vim,sed等命令,這些命令都是查看日誌的利器,但是其中也有部分缺陷,怎麼樣用正確的姿勢去又快又好地查看問題,這裏我將爲你介紹less命令,希望藉此,讓你查看問題的時間縮短,查看問題的效率升高
一、grep命令查看日誌有什麼不便?
我相信許多人,包括我自己在內,剛開始的時候,查看日誌,直接一個
grep '錯誤' 日誌.log
如果需要根據多個關鍵字查詢的話,再拼接grep命令,如果需要顯示上下行,再加上-A,-B或者-C參數。就會出現下上下關聯的日誌:
用grep日誌,你會發現這並不符合人類的閱讀習慣,上下5行你沒有看到具體問題,再上下100行,上下1000行,你自己最後都看暈了,甚至還看不出來問題點在哪裏。
試想,如果能像人類的閱讀文章一樣,可以自己翻頁閱讀,搜索查詢,這樣是不是體驗更好?也更容易定位到問題?
這個時候可能有人更換到vim了,覺得vim纔是王道,看日誌各種翻頁,各種方便。
二、vim很好用,但也有缺陷
vim的優點
vim確實是神器,樓主也用了一段時間,vim有如下功能
- 通過"/"直接搜索關鍵字,還能支持正則表達式匹配
- 通過“n”查找下一個,通過shift+n查找上一個匹配項
- 通過“f”向下翻頁,通過“b”向上翻頁
- 搜索的內容可以高亮顯示出來,一目瞭然
展示一下,使用場景:
樓主好幾年前,初識vim的時候,認定,就是它了,查日誌的利器,極大提升效率,果斷放棄grep命令。
vim的缺點
後來在使用過程中,樓主發現vim有一些缺點,這些缺點讓公司禁用了vim,命令,而樓主也感謝幸虧公司禁用了此命令,否則樓主還會一直用下去此命令,產生問題而不得知。
vim的主要缺點就是兩個:
- vim可以修改日誌文件內容,線上的日誌文件其實是不能隨便修改的,這個缺點和sed命令一致。
- vim會把日誌文件全部加載到內存中,如果日誌文件幾十兆還好,如果一個日誌文件好幾百兆甚至上G,一下就把內存佔滿了,甚至有導致服務宕機的危險
此時,vim和grep就都不能推薦使用了,有沒有什麼命令像“grep”命令一個沒有危險,又像vim一樣可以符合人類的閱讀習慣呢?
此時就輪到我們要說的less命令登場了
三、less命令
用法
less命令,可以直接通過less+日誌文件使用
less 日誌.log
這個時候你就可以進入到日誌文件中了
進入後的使用
進入文件中,默認是進入第一頁,使用“shift+g”到最後一頁,使用“g”到第一頁。
關於搜索關鍵字,上下翻頁等功能都與vim一致,可以直接參考vim的使用。
此時,你查看日誌不僅效率很高,而且沒有任何風險。可以說是看日誌最佳命令也不爲過
四、總結
我們本篇博文介紹了grep,sed,vim等命令的缺點,然後結合各個命令的優點,查日誌我們推薦了less命令,現在總結一個各個命令的優缺點:
- grep:沒有內存飆升風險,但是查看日誌的方式,不符合人類的閱讀習慣
- vim:符合人類的閱讀習慣,查日誌也很方便,但是可以修改日誌文件,也有內存飆升導致服務器宕機的風險
- less:沒有內存飆升風險,查日誌也符合人類習慣。
其實我們的生產環境,一個服務會部署多臺服務器,比如一個商品中心服務,可能會部署3臺,這個時候,一臺臺去查看日誌還是沒有特別方便,還是結合一個日誌收集工具,通過頁面去查詢最爲方便快捷,但是非生產環境,用好了查日誌命令就可以快速定位問題,解決問題。