2003 年 3 月 01 日
IBM 電子商務(wù)架構(gòu)師 Chris Walden 將通過(guò)他在 developerWorks 上發(fā)表的九篇系列文章來(lái)指導(dǎo)您如何在 Linux 環(huán)境中運(yùn)用您的 Windows 操作技巧。在本部分,我們追蹤、處理和輪循日志,以增強(qiáng)系統(tǒng)安全,收集信息。
成功地管理任何系統(tǒng)的關(guān)鍵之一,是要知道系統(tǒng)中正在發(fā)生什么事。Linux 中提供了異常日志,并且日志的細(xì)節(jié)是可配置的。
Linux 日志都以明文形式存儲(chǔ),所以您不需要特殊的工具就可以搜索和閱讀它們。您還可以編寫(xiě)腳本,來(lái)掃描這些日志,并基于它們的內(nèi)容去自動(dòng)執(zhí)行某些功能。
Linux 日志存儲(chǔ)在 /var/log 目錄中。這里有幾個(gè)由系統(tǒng)維護(hù)的日志文件,但其他服務(wù)和程序也可能會(huì)把它們的日志放在這里。大多數(shù)日志只有 root 才可以讀,不過(guò)只需要修改文件的訪問(wèn)權(quán)限就可以讓其他人可讀。
messages 日志是核心系統(tǒng)日志文件。它包含了系統(tǒng)啟動(dòng)時(shí)的引導(dǎo)消息,以及系統(tǒng)運(yùn)行時(shí)的其他狀態(tài)消息。IO 錯(cuò)誤、網(wǎng)絡(luò)錯(cuò)誤和其他系統(tǒng)錯(cuò)誤都會(huì)記錄到這個(gè)文件中。其他信息,比如某個(gè)人的身份切換為 root,也在這里列出。如果服務(wù)正在運(yùn)行,比如 DHCP 服務(wù)器,您可以在 messages 文件中觀察它的活動(dòng)。通常,/var/log/messages 是您在做故障診斷時(shí)首先要查看的文件。
這個(gè)日志記錄的是 Xfree86 Xwindows 服務(wù)器最后一次執(zhí)行的結(jié)果。如果您在啟動(dòng)到圖形模式時(shí)遇到了問(wèn)題,一般情況從這個(gè)文件中會(huì)找到失敗的原因。
根據(jù)您的 Linux 發(fā)行版本以及您所運(yùn)行的服務(wù)和應(yīng)用程序的不同,/var/log 目錄下還會(huì)有其他日志文件。例如,可能會(huì)有與郵件服務(wù)器、資源共享、自動(dòng)任務(wù)等相關(guān)的日志。
![]() ![]() |
![]()
|
您將看到,/var/log 目錄下有一些文件以一個(gè)數(shù)字結(jié)尾,這些是已輪循的歸檔文件。日志文件會(huì)變得特別大,特別笨重。Linux 提供了一個(gè)命令來(lái)輪循這些日志,以使您的當(dāng)前日志信息不會(huì)淹沒(méi)在舊的無(wú)關(guān)信息之中。 logrotate
通常是定時(shí)自動(dòng)運(yùn)行的,但是也可以手工運(yùn)行。當(dāng)執(zhí)行后,logrotate 將取得當(dāng)前版本的日志文件,然后在這個(gè)文件名最后附加一個(gè)“.1”。其他更早輪循的文件為“.2”、“.3”,依次類(lèi)推。文件名后的數(shù)字越大,日志就越老。
您可以通過(guò)編輯 /etc/logrotate.conf 文件來(lái)配置 logrotate
的自動(dòng)行為。通過(guò) man logrotate
來(lái)學(xué)習(xí) logrotate
的全部細(xì)節(jié)。
![]() ![]() |
![]()
|
任何文本工具都可以用來(lái)處理日志文件。下面是一些特別有用的工具。
dmesg
使用 dmesg
命令可以快速查看最后一次系統(tǒng)引導(dǎo)的引導(dǎo)日志。通常它的內(nèi)容會(huì)很多,所以您往往會(huì)希望將其通過(guò)管道傳輸到一個(gè)閱讀器。
dmesg | more |
上面的命令將以分頁(yè)的方式顯示引導(dǎo)信息。
tail
有時(shí),當(dāng)某些行為發(fā)生時(shí),您會(huì)希望密切關(guān)注一個(gè)日志文件。 Tail
命令設(shè)計(jì)用于顯示文本文件的最后幾行。使用 -f
開(kāi)關(guān),當(dāng)日志增加新的內(nèi)容時(shí), tail
將繼續(xù)顯示新的輸出。
tail -f /var/log/messages
上面的命令將顯示 /var/log/messages 文件的最后 10 行,然后繼續(xù)監(jiān)控那個(gè)文件,并輸出新的行為。要停止 tail -f
命令,使用 Ctrl + C 來(lái)中止進(jìn)程。
more More
的工作方式與 DOS 版本相同。您可以將它指向一個(gè)文件,或者通過(guò)它以管道輸出信息,以分頁(yè)的方式來(lái)查看信息。例如,以分頁(yè)方式顯示 Xfree86 啟動(dòng)日志文件的內(nèi)容:
more /var/log/XFree86.0.log
使用“q”或者 [Ctrl]-C 來(lái)停止查看文件。
less
Less 是另一個(gè)文本閱讀器,不過(guò)它還允許在文件中滾動(dòng)瀏覽以及檢索信息。
less /var/log/messages
上面的命令將顯示 /var/log/messages 文件的內(nèi)容。使用“q”來(lái)停止查看文件。使用“h”來(lái)獲得 less
的使用幫助。
logger
您可能會(huì)希望將自己的消息也記錄到日志文件。您可以只是將日志消息附加到恰當(dāng)?shù)奈谋疚募悄仨毜锰子萌罩拘畔⒏袷?。同樣,如果日志系統(tǒng)被定制,您還將不得不修改您的代碼。l logger
命令使您可以將自己的消息發(fā)送到日志工具。在腳本中使用它來(lái)提供關(guān)于執(zhí)行和錯(cuò)誤的消息。
![]() ![]() |
![]()
|
有兩個(gè)服務(wù),或者稱(chēng)之為后臺(tái)程序,在控制日志,分別是 klogd
和 syslogd
。 klogd
只處理內(nèi)核消息, syslogd
處理其他系統(tǒng)消息,比如應(yīng)用程序。您可以通過(guò)編輯 /et/syslog.conf 和 /etc/sysconfig/syslog 來(lái)配置它們的行為。完全定制日志超出了本文的范圍,不過(guò)在本文最后的 參考資料 列表中可以找到詳細(xì)的資料。您也可以查看 /etc/syslogd.conf 的 man 頁(yè)面來(lái)進(jìn)一步學(xué)習(xí)。
本質(zhì)上,軟件所產(chǎn)生的每一條消息都提供一些信息用于確定消息是從哪里來(lái)的以及這個(gè)消息是什么。/etc/syslog.conf 文件允許您來(lái)指定如何處理那種類(lèi)型的消息。您可以將它轉(zhuǎn)儲(chǔ)到消息文件,也可以將它轉(zhuǎn)儲(chǔ)到一個(gè)定制的文件。您可以將它發(fā)送到遠(yuǎn)程的主機(jī),由遠(yuǎn)程主機(jī)來(lái)根據(jù)其自己的 syslogd 配置來(lái)處理它。遠(yuǎn)程日志是一個(gè)非常好的安全功能。通過(guò)將您的日志放置到遠(yuǎn)程系統(tǒng)中,您可以防止有人通過(guò)改變?nèi)罩疚募?lái)掩飾其蹤跡。
下面是取自 man /etc/syslog.conf
頁(yè)面中的一個(gè)定制日志的例子:
# Kernel messages are first, stored in the kernel |
第一個(gè)規(guī)則將所有內(nèi)核消息定向到 /var/adm/kernel 文件。
第二個(gè)語(yǔ)句將所有優(yōu)先級(jí)為 crit 或者更高的內(nèi)核消息定向到一個(gè)名為 finlandia 的遠(yuǎn)程主機(jī)。這是有用的,因?yàn)槿绻鳈C(jī)崩潰以及磁盤(pán)錯(cuò)誤無(wú)法恢復(fù),您將無(wú)法讀取存儲(chǔ)的消息。如果那些消息同時(shí)在遠(yuǎn)程主機(jī)上也存在,您就依然可以找出崩潰的原因。
第三個(gè)規(guī)則將這些消息定向到實(shí)際的控制臺(tái),這樣,在這臺(tái)機(jī)器上工作的人也可以看到它們。
第四行告訴 syslogd 將所有優(yōu)先級(jí)為 info 到 warning 的內(nèi)核消息保存到 /var/adm/kernel-info 文件。所有優(yōu)先級(jí)為 err 以及更高的消息不包括在內(nèi)。
像這種定制日志的能力為 Linux 環(huán)境提供了極大的靈活性與可控制性。
![]() ![]() |
![]()
|
Webmin 有一個(gè)用于操作日志文件的模塊。
顯示了所有配置的日志文件。點(diǎn)擊一個(gè)日志文件來(lái)編輯它的配置。
或者您可以點(diǎn)擊 View 來(lái)查看日志文件的內(nèi)容。
![]() |
|
Webmin 模塊與 /etc/syslog.conf 文件相關(guān)聯(lián),因此您對(duì)其中一個(gè)所做的修改會(huì)影響另一個(gè)。
![]() ![]() |
![]()
|
Linux 中的日志文件對(duì)于系統(tǒng)的故障診斷和維護(hù)來(lái)說(shuō)至關(guān)重要。Linux 日志記錄到文本文件,所以不需要專(zhuān)門(mén)的工具來(lái)查看這些文件。文本文件也容易用于定制腳本和程序。
日志被輪循,以避免變得過(guò)大,同時(shí)可以將當(dāng)前信息與老的數(shù)據(jù)相分離。日志輪循是可配置的。
日志是高度可配置的,為了安全和備份,日志甚至可以存儲(chǔ)到單獨(dú)的系統(tǒng)中。您可以讓自己的腳本和程序產(chǎn)生系統(tǒng)日志消息,這些消息將被 syslogd 后臺(tái)進(jìn)程識(shí)別出并進(jìn)行處理。
info syslog.conf
。 info syslogd
。 ![]() | ||
![]() | Chris Walden 是位于德克薩斯州奧斯汀的 IBM Developer Relations Technical Consulting(也稱(chēng)為 dragonslayers )的一名電子商務(wù)架構(gòu)師,該公司為 IBM 商業(yè)伙伴提供教育、實(shí)現(xiàn)和咨詢(xún)。他致力于 Linux 相關(guān)工作,一有機(jī)會(huì)就向身邊的人宣傳 Linux 的種種好處。除了完成他的架構(gòu)師的職責(zé)之外,他還精通 Linux 基礎(chǔ)設(shè)施服務(wù)器的各個(gè)領(lǐng)域,包括混合平臺(tái)用戶(hù)環(huán)境下的文件、打印以及其他應(yīng)用服務(wù)等。Chris 有 10 年的計(jì)算機(jī)行業(yè)經(jīng)驗(yàn),從現(xiàn)場(chǎng)支持到 Web 應(yīng)用開(kāi)發(fā)和顧問(wèn),各個(gè)領(lǐng)域他都曾涉足。您可以通過(guò) cmwalden-at-us.ibm.com 與 Chris 聯(lián)系。 |
聯(lián)系客服