Thinking in XiaoQiang
          世人皆有悲哀,只有你不明白
          posts - 56,comments - 150,trackbacks - 0
          使用日志

          級別: 初級

          Chris Walden
          電子商務(wù)架構(gòu)師, IBM Developer Relations
          2003 年 3 月

          Column iconIBM 電子商務(wù)架構(gòu)師 Chris Walden 將通過他在 developerWorks 上發(fā)表的九篇系列文章來指導(dǎo)您如何在 Linux 環(huán)境中運(yùn)用您的 Windows 操作技巧。在本部分,我們追蹤、處理和輪循日志,以增強(qiáng)系統(tǒng)安全,收集信息。

          成功地管理任何系統(tǒng)的關(guān)鍵之一,是要知道系統(tǒng)中正在發(fā)生什么事。Linux 中提供了異常日志,并且日志的細(xì)節(jié)是可配置的。

          Linux 日志都以明文形式存儲,所以您不需要特殊的工具就可以搜索和閱讀它們。您還可以編寫腳本,來掃描這些日志,并基于它們的內(nèi)容去自動執(zhí)行某些功能。

          Linux 日志存儲在 /var/log 目錄中。這里有幾個由系統(tǒng)維護(hù)的日志文件,但其他服務(wù)和程序也可能會把它們的日志放在這里。大多數(shù)日志只有 root 才可以讀,不過只需要修改文件的訪問權(quán)限就可以讓其他人可讀。

          /var/log/messages
          messages 日志是核心系統(tǒng)日志文件。它包含了系統(tǒng)啟動時的引導(dǎo)消息,以及系統(tǒng)運(yùn)行時的其他狀態(tài)消息。IO 錯誤、網(wǎng)絡(luò)錯誤和其他系統(tǒng)錯誤都會記錄到這個文件中。其他信息,比如某個人的身份切換為 root,也在這里列出。如果服務(wù)正在運(yùn)行,比如 DHCP 服務(wù)器,您可以在 messages 文件中觀察它的活動。通常,/var/log/messages 是您在做故障診斷時首先要查看的文件。

          /var/log/XFree86.0.log
          這個日志記錄的是 Xfree86 Xwindows 服務(wù)器最后一次執(zhí)行的結(jié)果。如果您在啟動到圖形模式時遇到了問題,一般情況從這個文件中會找到失敗的原因。

          其他日志
          根據(jù)您的 Linux 發(fā)行版本以及您所運(yùn)行的服務(wù)和應(yīng)用程序的不同,/var/log 目錄下還會有其他日志文件。例如,可能會有與郵件服務(wù)器、資源共享、自動任務(wù)等相關(guān)的日志。

          準(zhǔn)備好了就開始輪循
          您將看到,/var/log 目錄下有一些文件以一個數(shù)字結(jié)尾,這些是已輪循的歸檔文件。日志文件會變得特別大,特別笨重。Linux 提供了一個命令來輪循這些日志,以使您的當(dāng)前日志信息不會淹沒在舊的無關(guān)信息之中。 logrotate 通常是定時自動運(yùn)行的,但是也可以手工運(yùn)行。當(dāng)執(zhí)行后,logrotate 將取得當(dāng)前版本的日志文件,然后在這個文件名最后附加一個“.1”。其他更早輪循的文件為“.2”、“.3”,依次類推。文件名后的數(shù)字越大,日志就越老。

          您可以通過編輯 /etc/logrotate.conf 文件來配置 logrotate 的自動行為。通過 man logrotate 來學(xué)習(xí) logrotate 的全部細(xì)節(jié)。

          日志工具
          任何文本工具都可以用來處理日志文件。下面是一些特別有用的工具。

          dmesg
          使用 dmesg 命令可以快速查看最后一次系統(tǒng)引導(dǎo)的引導(dǎo)日志。通常它的內(nèi)容會很多,所以您往往會希望將其通過管道傳輸?shù)揭粋€閱讀器。

          dmesg | more 

          上面的命令將以分頁的方式顯示引導(dǎo)信息。

          tail
          有時,當(dāng)某些行為發(fā)生時,您會希望密切關(guān)注一個日志文件。 Tail 命令設(shè)計(jì)用于顯示文本文件的最后幾行。使用 -f 開關(guān),當(dāng)日志增加新的內(nèi)容時, tail 將繼續(xù)顯示新的輸出。

          tail -f /var/log/messages

          上面的命令將顯示 /var/log/messages 文件的最后 10 行,然后繼續(xù)監(jiān)控那個文件,并輸出新的行為。要停止 tail -f 命令,使用 Ctrl + C 來中止進(jìn)程。

          more
          More 的工作方式與 DOS 版本相同。您可以將它指向一個文件,或者通過它以管道輸出信息,以分頁的方式來查看信息。例如,以分頁方式顯示 Xfree86 啟動日志文件的內(nèi)容:

          more /var/log/XFree86.0.log

          使用“q”或者 [Ctrl]-C 來停止查看文件。

          less
          Less 是另一個文本閱讀器,不過它還允許在文件中滾動瀏覽以及檢索信息。

          less /var/log/messages

          上面的命令將顯示 /var/log/messages 文件的內(nèi)容。使用“q”來停止查看文件。使用“h”來獲得 less 的使用幫助。

          logger
          您可能會希望將自己的消息也記錄到日志文件。您可以只是將日志消息附加到恰當(dāng)?shù)奈谋疚募悄仨毜锰子萌罩拘畔⒏袷健M瑯樱绻罩鞠到y(tǒng)被定制,您還將不得不修改您的代碼。l logger 命令使您可以將自己的消息發(fā)送到日志工具。在腳本中使用它來提供關(guān)于執(zhí)行和錯誤的消息。

          定制的日志
          有兩個服務(wù),或者稱之為后臺程序,在控制日志,分別是 klogdsyslogdklogd 只處理內(nèi)核消息, syslogd 處理其他系統(tǒng)消息,比如應(yīng)用程序。您可以通過編輯 /et/syslog.conf 和 /etc/sysconfig/syslog 來配置它們的行為。完全定制日志超出了本文的范圍,不過在本文最后的 參考資料 列表中可以找到詳細(xì)的資料。您也可以查看 /etc/syslogd.conf 的 man 頁面來進(jìn)一步學(xué)習(xí)。

          本質(zhì)上,軟件所產(chǎn)生的每一條消息都提供一些信息用于確定消息是從哪里來的以及這個消息是什么。/etc/syslog.conf 文件允許您來指定如何處理那種類型的消息。您可以將它轉(zhuǎn)儲到消息文件,也可以將它轉(zhuǎn)儲到一個定制的文件。您可以將它發(fā)送到遠(yuǎn)程的主機(jī),由遠(yuǎn)程主機(jī)來根據(jù)其自己的 syslogd 配置來處理它。遠(yuǎn)程日志是一個非常好的安全功能。通過將您的日志放置到遠(yuǎn)程系統(tǒng)中,您可以防止有人通過改變?nèi)罩疚募硌陲椘溘欅E。

          下面是取自 man /etc/syslog.conf 頁面中的一個定制日志的例子:


          
                        # Kernel messages are first, stored in the kernel
                        # file, critical messages and higher ones also go
                        # to another host and to the console
                        #
                        kern.*                       /var/adm/kernel
                        kern.crit                    @finlandia
                        kern.crit                    /dev/console
                        kern.info;kern.!err          /var/adm/kernel-info
          

          第一個規(guī)則將所有內(nèi)核消息定向到 /var/adm/kernel 文件。

          第二個語句將所有優(yōu)先級為 crit 或者更高的內(nèi)核消息定向到一個名為 finlandia 的遠(yuǎn)程主機(jī)。這是有用的,因?yàn)槿绻鳈C(jī)崩潰以及磁盤錯誤無法恢復(fù),您將無法讀取存儲的消息。如果那些消息同時在遠(yuǎn)程主機(jī)上也存在,您就依然可以找出崩潰的原因。

          第三個規(guī)則將這些消息定向到實(shí)際的控制臺,這樣,在這臺機(jī)器上工作的人也可以看到它們。

          第四行告訴 syslogd 將所有優(yōu)先級為 info 到 warning 的內(nèi)核消息保存到 /var/adm/kernel-info 文件。所有優(yōu)先級為 err 以及更高的消息不包括在內(nèi)。

          像這種定制日志的能力為 Linux 環(huán)境提供了極大的靈活性與可控制性。

          Webmin 中的日志配置
          Webmin 有一個用于操作日志文件的模塊。

          圖 1. Webmin 系統(tǒng)日志視圖
          圖 1. Webmin 系統(tǒng)日志視圖

          顯示了所有配置的日志文件。點(diǎn)擊一個日志文件來編輯它的配置。

          圖 2. Webmin 日志編輯屏幕
          圖 2. Webmin 日志編輯屏幕

          或者您可以點(diǎn)擊 View 來查看日志文件的內(nèi)容。

          在控制臺中查看日志文件
          由于 Linux 中的日志文件以明文的形式記錄,所以不需要特殊的工具來解釋它們。任何文本文件閱讀器都可以顯示 Linux 日志文件。瀏覽器,比如 Mozilla,可以顯示日志文件,并且提供搜索功能。Linux 還有控制臺工具可以查看文本文件。 more ,如同 MS DOS 版本一樣以分頁方式顯示文件。 less 命令將在只讀閱讀器中顯示文件,這個閱讀器具有雙向滾動和搜索的功能。現(xiàn)在,在命令行中輸入 less /var/log/messages ,體會一下這個命令。

          Webmin 模塊與 /etc/syslog.conf 文件相關(guān)聯(lián),因此您對其中一個所做的修改會影響另一個。

          您生活中的日志
          Linux 中的日志文件對于系統(tǒng)的故障診斷和維護(hù)來說至關(guān)重要。Linux 日志記錄到文本文件,所以不需要專門的工具來查看這些文件。文本文件也容易用于定制腳本和程序。

          日志被輪循,以避免變得過大,同時可以將當(dāng)前信息與老的數(shù)據(jù)相分離。日志輪循是可配置的。

          日志是高度可配置的,為了安全和備份,日志甚至可以存儲到單獨(dú)的系統(tǒng)中。您可以讓自己的腳本和程序產(chǎn)生系統(tǒng)日志消息,這些消息將被 syslogd 后臺進(jìn)程識別出并進(jìn)行處理。

          參考資料

          關(guān)于作者
          Chris Walden 是位于德克薩斯州奧斯汀的 IBM Developer Relations Technical Consulting(也稱為 dragonslayers )的一名電子商務(wù)架構(gòu)師,該公司為 IBM 商業(yè)伙伴提供教育、實(shí)現(xiàn)和咨詢。他致力于 Linux 相關(guān)工作,一有機(jī)會就向身邊的人宣傳 Linux 的種種好處。除了完成他的架構(gòu)師的職責(zé)之外,他還精通 Linux 基礎(chǔ)設(shè)施服務(wù)器的各個領(lǐng)域,包括混合平臺用戶環(huán)境下的文件、打印以及其他應(yīng)用服務(wù)等。Chris 有 10 年的計(jì)算機(jī)行業(yè)經(jīng)驗(yàn),從現(xiàn)場支持到 Web 應(yīng)用開發(fā)和顧問,各個領(lǐng)域他都曾涉足。您可以通過 cmwalden-at-us.ibm.com 與 Chris 聯(lián)系。
          posted on 2005-10-27 09:26 小強(qiáng) 閱讀(280) 評論(0)  編輯  收藏 所屬分類: Linux
          主站蜘蛛池模板: 蒙山县| 福州市| 英山县| 长春市| 绥德县| 湄潭县| 当涂县| 县级市| 安丘市| 尖扎县| 甘孜| 房产| 科技| 翁牛特旗| 嘉祥县| 宜兴市| 甘孜| 夏河县| 连平县| 台前县| 山阴县| 高阳县| 伊通| 沂南县| 泰来县| 汉阴县| 涟源市| 秦皇岛市| 安塞县| 苏尼特左旗| 晋城| 登封市| 德昌县| 秦皇岛市| 揭阳市| 梁河县| 石河子市| 永济市| 大石桥市| 合肥市| 安达市|