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