Windows 到 Linux 之旅:第 5 部分. Linux 日誌(轉)

post0發表於2007-08-10
Windows 到 Linux 之旅:第 5 部分. Linux 日誌(轉)[@more@]

使用日誌

級別:初級

Chris Walden (cmwalden-at-us.ibm.com)

電子商務架構師, IBM Developer Relations

2004 年 1 月

IBM 電子商務架構師 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

您可能會希望將自己的訊息也記錄到日誌檔案。您可以只是將日誌訊息附加到恰當的文字檔案,但是您必須得套用日誌資訊格式。同樣,如果日誌系統被定製,您還將不得不修改您的程式碼。llogger 命令使您可以將自己的訊息傳送到日誌工具。在指令碼中使用它來提供關於執行和錯誤的訊息。

定製的日誌

有兩個服務,或者稱之為後臺程式,在控制日誌,分別是 klogd 和 syslogd。klogd 只處理核心訊息,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 系統日誌檢視

[myimg]upload/webminsyslogs2.[/myimg]

顯示了所有配置的日誌檔案。點選一個日誌檔案來編輯它的配置。

圖 2. Webmin 日誌編輯螢幕

[myimg]upload/webminsyslogslogedit2.png[/myimg]

或者您可以點選 View 來檢視日誌檔案的內容。

在控制檯中檢視日誌檔案

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

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

您生活中的日誌

Linux 中的日誌檔案對於系統的故障診斷和維護來說至關重要。Linux 日誌記錄到文字檔案,所以不需要專門的工具來檢視這些檔案。文字檔案也容易用於定製指令碼和程式。

日誌被輪循,以避免變得過大,同時可以將當前資訊與老的資料相分離。日誌輪循是可配置的。

日誌是高度可配置的,為了安全和備份,日誌甚至可以儲存到單獨的系統中。您可以讓自己的指令碼和程式產生系統日誌訊息,這些訊息將被 syslogd 後臺程式識別出並進行處理。

參考資料

* 閱讀 Windows 到 Linux 之旅系列文章 的其他部分(developerWorks, 2003 年 11 月)。

* syslog.conf 的 man 頁中有關於如何配置日誌的極好的描述。要訪問它,請輸入命令 info syslog.conf。

* syslogd 的 man 頁很好地概括描述了 syslogd 的工作原理,包括安全的問題。請輸入命令 info syslogd。

* IBM developerWorks LPI certification 101 exam prep, Part 2: Basic administration 介紹了 shell 管道、重定向和本文處理命令。

* IBM developerWorks 教程“LPI certification 101 exam prep, Part 4: Advanced administration”中也介紹了使用系統日誌。

* IBM developerWorks 文章“Addressing security issues in Linux”將幫您初步瞭解 Linux 安全。

* 在 IBM developerWorks 文章“理解 Linux 配置檔案”中您將發現更多關於.config 檔案的資料。

* “Linux 使用者技術 FAQ” (developerWorks, 2001 年 7 月) 也可以幫助您順利地從 Windows 過渡到 Linux。

* 要開始在 Linux 上使用 IBM 的軟體產品,為您的 Linux 應用開發加油提速 將為您提供最好的參考資料。您可以找到關於 DB2、Lotus Domino、WebSphere Application Server、WebSphere Studio 等多種應用軟體的安裝提示和參考資料。您還可以登入獲得免費的 Linux Software Evaluation Kit,裡面有試用軟體和培訓資料。

* 在 developerWorks Linux 專區可以找到更多 為 Linux 開發者準備的參考資料。

關於作者

Chris Walden 是位於德克薩斯州奧斯汀的 IBM Developer Relations Technical Consulting(也稱為 dragonslayers)的一名電子商務架構師,該公司為 IBM 商業夥伴提供教育、實現和諮詢。他致力於 Linux 相關工作,一有機會就向身邊的人宣傳 Linux 的種種好處。除了完成他的架構師的職責之外,他還精通 Linux 基礎設施伺服器的各個領域,包括混合平臺使用者環境下的檔案、列印以及其他應用服務等。Chris 有 10 年的計算機行業經驗,從現場支援到 Web 應用開發和顧問,各個領域他都曾涉足。您可以透過 cmwalden-at-us.ibm.com 與 Chris 聯絡

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-940049/,如需轉載,請註明出處,否則將追究法律責任。

相關文章