Linux查看文件和日誌的常用命令

Linux查看文件和日誌的常用命令

當項目部署和運行起來後,會產生很多的運行日誌。日誌的內容是程序裏定義的重要輸出信息,還有程序出錯的報錯信息。

查看日誌文件大部分是去日誌中獲取一些數據,確認某些信息,還有定位問題時查看報錯信息。查看文件是查看代碼文件和配置文件,確認是否需要修改。

在服務器上查看文件,都沒有圖形界面(當然可以把日誌導出到 windows 中查看,但不是很方便,而且比較大的文件一般軟件打不開),所以需要熟悉 Linux 中常用的查看命令。

我先 vim date.sh 創建了一個 Shell 腳本 date.sh ,裏面的代碼如下,用於生成一個模擬的日誌文件。

#! /bin/bash
i=0
until [[ $day == "2019-12-31" ]]
do
        day=$(date -d "2019-01-01 $i days" +%Y-%m-%d)
        echo $day
        ((i++))
done

執行命令將 2019 年的所有日期寫到 date.log 文件中。

sh date.sh > date.log

一、grep 命令

使用 grep 可以根據指定的內容在文件中匹配滿足條件的行,匹配到的內容會高亮顯示。

如找包含“10”的行,執行命令後會匹配到所有包含“10”的行(每個月10號的日期和所有10月的日期)。

grep 10 date.log

可以加參數(使用--help查看詳細參數)來輔助查詢。

如使用 -n 顯示行號。

grep -n 10-01 date.log

可以多次使用 grep 命令,不斷縮小匹配的數據範圍,直到精準地找到某行日誌。如要找國慶節所在的行並查看這是一年的第幾天,但不知道日期的格式,先匹配10,匹配的數據有很多,再匹配10-01和加上-n參數,就可以完成了。

二、vi 和 vim 命令

vi 和 vim 都是 Linux 系統中的編輯器, vim 是從 vi 發展出來的,功能更豐富一些,最直觀的區別是 vim 查看和編寫代碼時有顏色提示,方便編寫程序。

一般不會使用 vi 和 vim 查看日誌,因爲日誌是不需要編輯的。

使用 vi 和 vim 主要是查看配置文件和代碼文件,查看時如果需要修改,立即就可以切換模式進行編輯,更方便。

vim date.sh

三、cat 和 tac 命令

cat 命令會一次將整個文件的內容顯示出來,tac(cat倒着寫) 命令一樣,cat 是從頭往尾顯示,tac 是從尾往頭顯示,顯示順序剛好相反。

tac date.log

cat 命令適合查看內容比較少的文件(最好小於一個屏幕)。不適合使用來查看比較大的文件,那樣需要滾動屏幕(大文件會滾動很久),而且也不方便查找想找的內容(配合其他參數使用另說)。

如果查看時想查看行號,可以加-n參數或-b參數,-n會計算空行的數量,-b不會計算空行的數量,更多參數信息使用--help查看。

cat -b date.log

四、tail 和 head 命令

tail 命令是從尾部顯示內容,head 命令是從頭部顯示內容。

tail date.log
head date.log

tail 和 head 命令默認都是顯示10行內容,可以使用-n參數指定顯示的行數,-n還可以省略,直接在-(槓)後跟行數,如下面兩個命令都是顯示5行內容。

tail -n 5 date.log
tail -5 date.log

還有一個經常使用的參數-f,表示循環讀取。因爲到服務器上查看日誌時,不可能將項目停掉再查看日誌。項目運行着就會繼續往日誌文件中寫內容,調試時也需要查看實時的日誌信息,使用-f可以循環讀取實時的日誌內容。-f參數會佔用一個終端,使用 Ctrl+Z 或 Ctrl+C 都可以停掉。

tail -f date.log

對於比較大的日誌文件(如有10萬行的日誌文件),tail 可以與 head 配合使用,也可以與前面的 cat 和 grep 配合使用,在實際使用時可以靈活運用。 date.log 文件一共365行,假如要查看第101行到第110行,同時要顯示行號,可以用如下命令。

cat -b date.log | head -110 | tail -10

五、more 和 less 命令

more 命令和 less 命令是查看文件裏的所有內容,按頁來展示日誌信息。

more 和 less 會從文件開頭顯示一頁的內容(根據屏幕大小自動分頁,也可以自定義頁的大小),按回車鍵往後滾動一行,按空格鍵往後滾動一頁,按B鍵往回滾動一頁,可以隨時按q鍵退出瀏覽。

對於比較大的日誌文件,使用 more 和 less 命令比 cat 命令好用很多。

more date.log
less date.log

more 命令與 cat 命令一樣,一開始就會將整個文件的內容都加載出來,顯示內容多少根據屏幕大小自動顯示,屏幕下方會顯示當前處於文件中的大概位置,有一個百分比進度,當查看到文件最後,進度到100%,自動退出顯示。

less 命令一開始不會將整個文件的內容都加載出來,而是邊查看邊加載,沒有顯示進度。less 命令可以使用上下方向鍵任意上下按行滾動顯示,也可以使用左右方向鍵向左或向右滾動屏幕,對於比較長的行可以方便查看右邊的內容,而 more 不能。當 less 查看到文件末尾時,會顯示 END,不會自動退出,需要自己使用q退出。

使用 more 和 less 時,可以使用參數來協助查看,如使用-s參數可以將多個連續的空行顯示成一行。

more 要查看行號,可以按=(等號)鍵顯示當前行的行號,less 要查看行號,可以使用-N參數顯示所有行的行號。

less -N date.log

要了解更多參數可以使用--help查看,less 的參數比 more 多很多,說明 less 支持的功能更多。

六、nl 命令

nl 命令的功能主要是設置行號顯示的,不過在顯示行號的同時也會顯示對應的內容,所以可以用來查看文件的內容。

nl 命令與 cat 相似,會一次將文件中的所有內容顯示到控制檯。

默認顯示時就有行號,且不計算空行的數量。

nl date.log

可以使用-b參數來指定是否計算空行的數量,指定-b爲a會計算,指定-b爲t不計算。

可以使用-w參數指定行數佔用多少位,默認是6位,使用-n參數指定行號的對齊方式,指定-n爲ln會左對齊,指定-n爲rn會右對齊,指定-n爲rz會右對齊並且前面補0,補滿-w指定的位數。

nl -b t -n rz date.sh

在 Linux 中查看文件內容的常用命令大概就以上這些了,它們都是 Linux 自帶的。還有一些根據它們擴展出來的命令,有些需要安裝後才能使用,如果上面的命令不滿足使用需求時,可以按需去安裝一些其他命令。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章