從命令行如何查看Linux日志
譯文【51CTO.com快譯】你的系統(tǒng)上出現(xiàn)問題時,要做的頭一件事就是查看日志。本文作者介紹了在Linux下查看日志的具體方法。
在你作為Linux管理員的職業(yè)生涯中,應(yīng)該早晚都會查看日志文件。因為日志文件可以幫助你排查問題,每個經(jīng)驗豐富的管理員在出現(xiàn)問題后,要做的頭一件事就是查看日志。
你會發(fā)現(xiàn)許多日志:系統(tǒng)日志、內(nèi)核日志、軟件包管理器日志、Xorg日志、啟動進程日志、Apache日志、MySQL日志… 你能想到的幾乎任何系統(tǒng)都有相應(yīng)的日志文件。
大多數(shù)日志文件位于一個便利的位置:/var/log。這些都是系統(tǒng)和服務(wù)日志,你的操作系統(tǒng)或某一項重要服務(wù)出現(xiàn)問題時,會高度依賴這些日志。如果是針對特定桌面應(yīng)用程序的問題,日志文件會被寫入到不同的位置(比如Thunderbird把崩潰報告寫入到 ‘~/.thunderbird/Crash Reports’)。桌面應(yīng)用程序把日志寫入到何處取決于開發(fā)人員,以及應(yīng)用程序是否允許自定義日志配置。
我們會著重介紹系統(tǒng)日志,因為這是Linux故障排查的核心所在。而這里的一個關(guān)鍵問題是,你如何查看那些日志文件?
幸好,你有眾多方法可以查看系統(tǒng)日志,它們都只要從命令行來執(zhí)行即可。
- /var/log
這是Linux系統(tǒng)上一個至關(guān)重要的文件夾。打開終端窗口,執(zhí)行命令cd /var/log。現(xiàn)在執(zhí)行命令ls,你就會看到位于該目錄下面的日志(見圖1)。
圖1:列出了位于/var/log/下的日志文件
現(xiàn)在,不妨看一看其中一個日志。
使用less查看日志
/var/log里面包含有最重要的日志之一是syslog。這個特殊的日志文件記錄下了除驗證相關(guān)消息之外的一切信息。假設(shè)你想查看這一個日志文件的內(nèi)容,可以迅速執(zhí)行命令less /var/log/syslog。這個命令會打開syslog日志文件,顯示文件首部。然后,你可以使用箭頭鍵每次向下滾動一行,使用空格鍵每次向下滾動一頁,或者使用鼠標輪,輕松滾動瀏覽文件。
這種方法有一個問題,那就是syslog會變得相當龐大;另外,考慮到你要找的信息極有可能在底部或靠近底部,你可能不想把時間耗費在每次逐行或逐頁滾動進入到尾部,由于在less命令中syslog已打開,你還可以按[Shift]+[g]組合鍵,立即進入到日志文件的尾部。尾部會標以(END)。然后,你可以用箭頭鍵或滾動輪向上滾動,找到你想要的具體信息。
當然,這不是很高效。
使用dmesg查看日志
dmesg命令輸出內(nèi)核環(huán)緩沖區(qū)。默認情況下,該命令會顯示來自內(nèi)核環(huán)緩沖區(qū)的所有信息。從終端窗口,執(zhí)行命令dmesg,整個內(nèi)核環(huán)緩沖區(qū)的內(nèi)容就會輸出顯示(見圖2)。
圖2:USB外部驅(qū)動器顯示了需要研究的一個問題
幸好,有一種內(nèi)置的控制機制讓你得以僅僅輸出某些程序模塊(facility,比如守護進程)。
假設(shè)你想查看用戶程序模塊的日志項,可執(zhí)行命令dmesg --facility=user。要是有什么信息記錄到該工具,它會輸出結(jié)果。
不像less命令,執(zhí)行dmesg會顯示日志的全部內(nèi)容,并讓你進入到文件尾部。你始終可以使用滾動輪來瀏覽終端窗口的緩沖區(qū)(如果適用的話)。相反,你會想要把dmesg的輸出通過管道命令輸入到less命令,就像這樣:
- dmesg | less
上述命令會輸出dmesg的內(nèi)容,讓你可以滾動瀏覽輸出,就像使用less命令查看標準日志那樣。
使用tail查看日志
tail命令可能是用于查看日志文件的最方便的工具之一。tail的功能就是輸出文件的尾部內(nèi)容。所以,如果你執(zhí)行命令tail /var/log/syslog,它只會輸出syslog文件的尾部幾行。
但是等一下,好玩的并不僅限于此。tail命令有一個很重要的技巧,這需要借助使用-f選項。如果你執(zhí)行命令tail -f /var/log/syslog,tail會繼續(xù)監(jiān)視日志文件,輸出寫入到文件的下一行。這意味著你可以在終端窗口里面實時關(guān)注什么寫入到syslog(見圖3)。
圖3:使用tail命令,關(guān)注/var/log/syslog
以這種方式使用tail對于排查問題大有幫助。
在關(guān)注文件時想退出tail命令,只需按 [Ctrl]+[x]組合鍵。
你還可以指示tail只關(guān)注某幾行。假設(shè)你只想查看寫入到syslog的尾部5行;為此,你可以執(zhí)行這個命令:
- tail -f -n 5 /var/log/syslog
上述命令會關(guān)注syslog的輸入,只輸出最近的5行。一旦有新的行寫入到syslog,它會將最早的那一行從首部刪除。這是讓關(guān)注日志文件這個過程更容易的一種好方法。我強烈建議別使用這種方法來查看少于四五行的日志,因為你***會發(fā)現(xiàn)輸入被截斷,無法獲得某項的全部細節(jié)。
還有其他工具
你會找到其他命令(甚至幾個還不錯的GUI工具)以便查看日志文件。預(yù)計more、grep、head、cat、multitail和系統(tǒng)日志查看器(System Log Viewer)可以幫助你通過日志文件來排查系統(tǒng)問題。
原文標題:Viewing Linux Logs from the Command Line,作者:Jack Wallen
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】