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

          級別: 初級

          Chris Walden
          電子商務架構師, IBM Developer Relations
          2003 年 3 月

          Column iconIBM 電子商務架構師 Chris Walden 將通過他在 developerWorks 上發表的九篇系列文章來指導您如何在 Linux 環境中運用您的 Windows 操作技巧。在本部分,我們追蹤、處理和輪循日志,以增強系統安全,收集信息。

          成功地管理任何系統的關鍵之一,是要知道系統中正在發生什么事。Linux 中提供了異常日志,并且日志的細節是可配置的。

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

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

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

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

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

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

          您可以通過編輯 /etc/logrotate.conf 文件來配置 logrotate 的自動行為。通過 man logrotate 來學習 logrotate 的全部細節。

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

          dmesg
          使用 dmesg 命令可以快速查看最后一次系統引導的引導日志。通常它的內容會很多,所以您往往會希望將其通過管道傳輸到一個閱讀器。

          dmesg | more 

          上面的命令將以分頁的方式顯示引導信息。

          tail
          有時,當某些行為發生時,您會希望密切關注一個日志文件。 Tail 命令設計用于顯示文本文件的最后幾行。使用 -f 開關,當日志增加新的內容時, tail 將繼續顯示新的輸出。

          tail -f /var/log/messages

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

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

          more /var/log/XFree86.0.log

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

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

          less /var/log/messages

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

          logger
          您可能會希望將自己的消息也記錄到日志文件。您可以只是將日志消息附加到恰當的文本文件,但是您必須得套用日志信息格式。同樣,如果日志系統被定制,您還將不得不修改您的代碼。l logger 命令使您可以將自己的消息發送到日志工具。在腳本中使用它來提供關于執行和錯誤的消息。

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

          本質上,軟件所產生的每一條消息都提供一些信息用于確定消息是從哪里來的以及這個消息是什么。/etc/syslog.conf 文件允許您來指定如何處理那種類型的消息。您可以將它轉儲到消息文件,也可以將它轉儲到一個定制的文件。您可以將它發送到遠程的主機,由遠程主機來根據其自己的 syslogd 配置來處理它。遠程日志是一個非常好的安全功能。通過將您的日志放置到遠程系統中,您可以防止有人通過改變日志文件來掩飾其蹤跡。

          下面是取自 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
          

          第一個規則將所有內核消息定向到 /var/adm/kernel 文件。

          第二個語句將所有優先級為 crit 或者更高的內核消息定向到一個名為 finlandia 的遠程主機。這是有用的,因為如果主機崩潰以及磁盤錯誤無法恢復,您將無法讀取存儲的消息。如果那些消息同時在遠程主機上也存在,您就依然可以找出崩潰的原因。

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

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

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

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

          圖 1. Webmin 系統日志視圖
          圖 1. Webmin 系統日志視圖

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

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

          或者您可以點擊 View 來查看日志文件的內容。

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

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

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

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

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

          參考資料

          關于作者
          Chris Walden 是位于德克薩斯州奧斯汀的 IBM Developer Relations Technical Consulting(也稱為 dragonslayers )的一名電子商務架構師,該公司為 IBM 商業伙伴提供教育、實現和咨詢。他致力于 Linux 相關工作,一有機會就向身邊的人宣傳 Linux 的種種好處。除了完成他的架構師的職責之外,他還精通 Linux 基礎設施服務器的各個領域,包括混合平臺用戶環境下的文件、打印以及其他應用服務等。Chris 有 10 年的計算機行業經驗,從現場支持到 Web 應用開發和顧問,各個領域他都曾涉足。您可以通過 cmwalden-at-us.ibm.com 與 Chris 聯系。
          posted on 2005-10-27 09:26 小強 閱讀(275) 評論(0)  編輯  收藏 所屬分類: Linux
          主站蜘蛛池模板: 合阳县| 平遥县| 修武县| 陈巴尔虎旗| 宁明县| 山东省| 渝北区| 阿合奇县| 宝山区| 五寨县| 淮安市| 石阡县| 肇州县| 嵊泗县| 肥乡县| 绵竹市| 喀什市| 平利县| 奇台县| 安泽县| 顺平县| 新密市| 乌什县| 宜宾县| 舒城县| 长葛市| 武威市| 临湘市| 来安县| 敦煌市| 宁国市| 呈贡县| 乐业县| 普陀区| 醴陵市| 陕西省| 南陵县| 茌平县| 岳普湖县| 乡宁县| 松桃|